许多用户在使用Telegram时,会遇到需要自动化监控群组消息、关键词提醒或频道内容转发的需求。例如,希望当某个群聊中出现特定关键词时,能第一时间收到通知;或者需要将某个频道的消息自动转发到自己的私人群组。这种“监听机器人”并非Telegram官方内置功能,而是需要借助第三方工具或自己编写代码来实现。本教程将手把手教你使用Python和Telegram Bot API,搭建一个基础的监听机器人,实现关键词监控与消息转发。
准备条件:注册Bot并获取Token
在开始编写代码之前,必须先拥有一个Telegram机器人账号。这是所有操作的基础。
具体操作说明:
1. 打开Telegram,在搜索框输入 @BotFather,这是Telegram官方的机器人管理账号。
2. 点击进入对话,发送命令 /newbot。
3. BotFather会要求你为机器人起一个名字(如“MyMonitorBot”),然后要求设置一个用户名(必须以 bot结尾,例如“my_monitor_bot”)。
4. 创建成功后,BotFather会返回一条包含 HTTP API Token的消息,格式类似 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11。请立即复制并妥善保存这个Token,后续所有操作都需要它。
注意事项/小提示:
- Token是机器人的唯一凭证,切勿泄露给他人,否则他人可完全控制你的机器人。
- 用户名一旦设置不可更改,请谨慎选择。
- 如果丢失Token,可以重新对BotFather发送 /token命令,选择对应机器人来获取新Token。
备用方案:
- 如果不想自己编写代码,也可以使用现成的第三方监听机器人工具(如“TGMonitor”或“BotFather”推荐的其他机器人),但需注意安全性和隐私风险。
- 若Telegram客户端无法搜索到BotFather,请先确认网络连接正常,并尝试使用官方客户端而非第三方修改版。
核心操作:编写监听机器人代码
这一步需要安装Python环境并编写脚本。如果对编程不熟悉,可以按以下步骤操作。
具体操作说明:
1. 在电脑上安装Python(建议版本3.8以上),并确保已安装 pip包管理器。
2. 打开命令行工具(Windows为CMD或PowerShell,Mac/Linux为终端),执行以下命令安装所需库:pip install python-telegram-bot。
3. 创建一个新文件夹,例如“TelegramMonitor”,在其中新建一个文本文件,命名为 monitor_bot.py。
4. 用记事本或任何代码编辑器打开该文件,复制以下代码并替换其中的 YOUR_BOT_TOKEN为你自己的Token:
`python
from telegram import Update
from telegram.ext import Application, MessageHandler, filters, ContextTypes
TOKEN = "YOUR_BOT_TOKEN" # 替换为你的Token
KEYWORDS = ["紧急", "通知", "测试"] # 要监听的关键词列表
async def monitor(update: Update, context: ContextTypes.DEFAULT_TYPE):
message_text = update.message.text
chat_id = update.effective_chat.id
user = update.effective_user
# 检查消息是否包含关键词
if any(keyword in message_text for keyword in KEYWORDS):
alert_text = f"监听到关键词!\n来自用户:{user.full_name}\n群组ID:{chat_id}\n消息内容:{message_text}"
# 将警报发送给机器人管理员(这里假设管理员是你的个人账号ID)
await context.bot.send_message(chat_id=YOUR_ADMIN_CHAT_ID, text=alert_text)
def main():
app = Application.builder().token(TOKEN).build()
# 监听所有文本消息
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, monitor))
print("机器人已启动,正在监听...")
app.run_polling()
if __name__ == "__main__":
main()
`
5. 将代码中的 YOUR_ADMIN_CHAT_ID替换为你的个人Telegram账号ID。获取方法:向 @userinfobot发送任意消息,它会返回你的用户ID数字。
6. 保存文件,在命令行中进入该文件夹,执行 python monitor_bot.py启动机器人。
注意事项/小提示:
- 代码中的 KEYWORDS列表可以按需修改,支持中文关键词。
- 机器人启动后,不要关闭命令行窗口,否则机器人会停止运行。
- 如果出现“No module named 'telegram'”错误,说明未正确安装库,请重新执行pip命令。
备用方案:
- 如果不想使用Python,也可以使用Node.js的 node-telegram-bot-api库编写类似功能。
- 对于完全不懂编程的用户,可考虑使用 IFTTT或 Zapier等自动化平台,但需要Telegram Premium账号支持。
验证结果:测试监听功能是否正常工作
代码运行后,必须进行实际测试以确保机器人能正确监听并发送警报。
具体操作说明:
1. 确保机器人已经在命令行中成功启动,输出显示“机器人已启动,正在监听...”。
2. 打开Telegram,将你的机器人添加到任意一个群组(需要群组管理员权限),或者直接与机器人私聊。
3. 在群组或私聊中发送一条包含关键词的消息,例如“今天有紧急通知”。
4. 几秒钟内,你应该会收到机器人发来的私聊消息,内容包含监听到的关键词、发送者和群组ID。
5. 如果机器人没有反应,请检查命令行窗口是否有错误提示(如Token错误或网络问题)。
注意事项/小提示:
- 机器人只有在群组中拥有 读取消息权限才能监听到消息。请确保机器人被设置为管理员(至少赋予“发送消息”和“读取消息”权限)。
- 如果测试时机器人无响应,首先确认是否在代码中正确设置了 YOUR_ADMIN_CHAT_ID。
- 建议使用另一个账号或小号进行测试,避免干扰正常对话。
备用方案:
- 如果机器人只回复私聊而不响应群组消息,请检查代码中的过滤器是否排除了群组消息。可尝试将
filters.TEXT改为filters.ALL进行测试。 - 若机器人完全无反应,尝试重启代码,并检查网络代理设置是否影响了Telegram API的连接。
备用处理:让机器人持续运行与错误排查
普通的命令行窗口关闭后机器人就会停止,因此需要将其部署到长期运行的服务器或云服务上。
具体操作说明:
1. 本地持续运行方案:在Windows上,可以将Python脚本打包成 .exe文件(使用 pyinstaller),然后设置为开机自启。在Mac/Linux上,可以使用 nohup命令:nohup python monitor_bot.py &。
2. 云服务器部署:购买一台低配云服务器(如阿里云、腾讯云、AWS的免费套餐),安装Python环境后上传脚本,使用 screen或 tmux保持会话。
3. 常见错误处理:
- 错误“Chat not found”:检查是否将机器人添加到了正确的群组或频道。
- 错误“Forbidden: bot was kicked from the supergroup”:机器人被踢出群组,需重新添加。
- 错误“Timed out”:网络不稳定,尝试更换代理或重启脚本。
注意事项/小提示:
- 云服务器部署时,建议使用 systemd服务管理,确保机器人崩溃后自动重启。
- 如果机器人需要监听多个群组,可以在代码中遍历群组ID列表,或使用数据库存储配置。
- 定期检查机器人日志,避免因API限频导致功能失效。
备用方案:
- 免费云服务如 PythonAnywhere或 Heroku支持部署Python应用,但需注意免费套餐有运行时间限制。
- 使用 Docker容器化部署,可简化环境配置和迁移。
常见问题补充
问:机器人只能监听文本消息吗?能否监听图片或文件?
答:可以。在代码中修改过滤器即可,例如使用 filters.PHOTO监听图片,或使用 filters.Document监听文件。但需要额外处理文件下载和内容识别,较为复杂。
问:如何让机器人只监听特定群组,而不是所有群组?
答:在 monitor函数中添加判断条件,例如 if chat_id == YOUR_TARGET_GROUP_ID:,只处理指定群组的消息。群组ID可以通过 @getidsbot获取。
问:机器人一天能处理多少消息?会被限制吗?
答:Telegram Bot API 有速率限制,大约每秒30条消息。如果监听大量群组,建议使用 异步处理和 消息队列优化性能。
问:我不想自己写代码,有没有现成的监听机器人推荐?
答:搜索 @TGMonitorBot或 @WatchDogRobot等第三方机器人,但请注意它们可能收集你的数据,且功能可能有限。建议优先学习本教程的自建方案。
总结:通过注册Bot、编写Python脚本并部署运行,你可以轻松搭建一个自定义关键词的Telegram监听机器人,实现消息监控与自动提醒。