本项目实现了一个 Telegram 机器人,能够通过远程服务器进行网络测试,包括 Ping 测试 和 路由追踪 (NextTrace)。同时,机器人还提供了管理员命令来管理授权用户和服务器。
- 测试demo:Network Test Bot
- Ping 测试:向指定目标发送 Ping 请求,统计丢包率和延迟等信息。
- 路由追踪 (NextTrace):对目标进行路由追踪,显示网络路径和延迟数据。
- 交互式操作:通过 Telegram 内联按钮选择服务器、设置测试参数,支持命令式和交互式两种模式。
- 管理员命令:支持添加/删除授权用户、添加/删除测试服务器,便于管理和维护。
本项目采用模块化设计,代码被拆分成多个文件,每个文件负责不同的功能。主要目录和文件说明如下:
mybot/
├── config.py # 配置加载和保存(包括机器人 token、用户列表、服务器列表)
├── state.py # 存储运行时的全局状态变量(如用户操作数据、速率限制信息)
├── utils.py # 常用辅助函数(日志、权限检查、消息删除、进度提示等)
├── network.py # 网络测试相关函数(Ping/NextTrace 命令的解析与格式化)
├── tasks.py # 后台任务(执行长时间运行的网络测试,并更新进度提示)
├── commands.py # Telegram 命令处理函数(用户和管理员命令)
├── handlers.py # 消息和按钮回调处理函数(交互式输入的处理)
└── bot.py # 主入口文件,构建 Telegram Bot 应用并注册所有处理器
你可以直接参考或修改这些文件,也可以根据需要扩展新的功能。
- Python 版本:建议使用 Python 3.10 或更高版本。
- 依赖库:
在命令行中运行以下命令将项目克隆到本地(假设你已经安装了 Git):
git clone https://github.com/Hamster-Prime/Network_Test_Bot.git
cd Network_Test_Bot在项目根目录下创建一个 config.json 文件,该文件用于配置机器人 token、管理员、授权用户以及服务器信息。下面提供一个示例配置:
{
"TELEGRAM_BOT_TOKEN": "你的Telegram Bot Token",
"ADMIN_USERS": [123456789],
"AUTHORIZED_USERS": [123456789, 987654321],
"SERVERS": [
{
"name": "服务器1",
"host": "192.168.1.100",
"port": 22,
"username": "root",
"password": "yourpassword"
},
{
"name": "服务器2",
"host": "example.com",
"port": 22,
"username": "user",
"password": "yourpassword"
}
]
}注意:
- 替换
"你的Telegram Bot Token"为你从 BotFather 获取的实际 token。 ADMIN_USERS数组中填写管理员的 Telegram 用户 ID(数字)。AUTHORIZED_USERS数组中填写允许使用该机器人的用户 ID。SERVERS数组中填写你拥有 SSH 登录权限的服务器信息。
建议使用 pip 安装依赖:
pip install -r requirements.txt你也可以使用 virtualenv 创建虚拟环境,然后安装依赖。
在bot中输入/install_nexttrace安装NextTrace工具:
在项目根目录下,运行主入口文件 bot.py:
python bot.py如果一切配置正确,你的 Telegram 机器人就会开始轮询更新,等待用户命令。
-
启动机器人
在 Telegram 中向你的机器人发送/start命令,机器人会回复欢迎信息和使用说明。 -
Ping 测试
- 命令式:
直接发送/ping 8.8.8.8 4,其中8.8.8.8是目标 IP,4是 Ping 次数(默认为 4)。 - 交互式:
只发送/ping,机器人会引导你选择测试服务器,然后提示你输入目标 IP 或域名,并选择 Ping 次数。
- 命令式:
-
路由追踪 (NextTrace)
- 命令式:
直接发送/nexttrace google.com,机器人会引导你选择测试服务器,若目标不是有效 IP,则会提示你选择 IPv4 或 IPv6 模式。 - 交互式:
只发送/nexttrace,机器人会引导你选择服务器,然后提示你输入目标,最后根据目标类型选择执行方式。
- 命令式:
-
添加授权用户
/adduser 111222333
将用户 ID 为111222333的用户加入授权列表。 -
删除授权用户
/rmuser 111222333
将用户 ID 为111222333的用户从授权列表中移除。 -
添加测试服务器
/addserver "测试服务器" example.com 22 user password或直接输入/addserver按提示继续添加 添加新的服务器信息。 -
删除测试服务器
/rmserver "测试服务器"或直接输入/rmserver按提示继续删除 删除名称为“服务器3”的服务器信息。
感谢 NextTrace 提供的 NextTrace 工具,以及本项目引用的其他开源项目。
本项目采用 MIT 许可协议。