很多用户在使用Telegram时,希望自动监控特定群组、频道或关键词消息,例如追踪项目动态、监控交易信号或接收自定义提醒。但官方客户端并没有内置监听功能,需要借助第三方机器人实现。本教程将手把手教你如何创建、配置并安全使用Telegram监听机器人,覆盖从注册到实际监控的完整流程。
问题现象描述
你可能会遇到以下场景:想24小时监控某个Telegram群组中的“空投”消息,但手动刷新太累;或者需要将特定频道的通知自动转发到自己的私人聊天中,但官方机器人无法满足定制化需求。更常见的是,当你尝试使用网上现成的监听机器人时,发现要么无法正常工作,要么因为权限不足而报错。这些问题的核心在于:没有正确搭建属于自己的监听机器人,或者不了解监听机器人的工作原理和配置方法。本教程将从零开始,解决所有监听机器人的搭建与使用难题。
获取Bot Token:创建你的专属机器人
这是搭建监听机器人的第一步。所有Telegram机器人都需要通过官方BotFather进行注册,获得唯一的API Token,这是机器人身份的凭证。
具体操作说明:
1. 在Telegram中搜索并打开 BotFather(官方机器人创建工具)。
2. 发送 /newbot命令,按提示为你的机器人设置名称(如 MyMonitorBot)和用户名(必须以 bot结尾,如 MyMonitorBot_bot)。
3. 创建成功后,BotFather会返回一段类似 123456789:ABCdefGHIjklMNOpqrsTUVwxyz的字符串,这就是 API Token。请立即复制并保存到安全的地方,后续所有操作都需要用到它。
4. 你可以通过 /setdescription和 /setabouttext为机器人添加描述,但非必须。
注意事项/小提示:
- Token 相当于机器人的密码,绝不能泄露给他人,否则对方可以控制你的机器人。
- 如果忘记Token,可以重新对BotFather发送
/token命令,选择对应机器人即可重新获取。 - 机器人的用户名一旦设置,后续修改会非常麻烦,建议提前想好。
备用方案:
- 如果BotFather没有响应,请检查你的Telegram网络是否正常,或更换科学上网节点。
- 如果提示用户名已被占用,尝试添加数字或下划线,例如
my_monitor_2024_bot。
获取用户与群组ID:确定监控目标
监听机器人需要知道“监控谁”和“发到哪里”。你必须获取目标群组、频道或你自己的用户ID,才能让机器人正确工作。
具体操作说明:
1. 获取你的用户ID:搜索 @userinfobot并发送 /start,该机器人会直接返回你的数字ID(如 123456789)。这是你的私人聊天ID,用于接收监控结果。
2. 获取群组或频道ID:将你的机器人先拉入目标群组/频道(需要管理员权限),然后在群组中发送任意消息。接着访问 https://api.telegram.org/bot<你的Token>/getUpdates(将 <你的Token>替换为实际值),在返回的JSON数据中查找 "chat":{"id":-100xxxxxxxxx}这一项,其中 -100开头的负数就是群组/频道ID。
3. 确认ID正确:ID通常是负数(群组/频道)或正数(用户),例如 -1001234567890。如果你只监控公开频道,也可以直接使用频道用户名(如 @channel_username),但群组必须使用数字ID。
注意事项/小提示:
- 使用
getUpdates接口时,必须确保机器人在目标群组中发送过至少一条消息,否则API不会返回该群组的记录。 - 如果返回的JSON为空,说明机器人没有收到任何新消息,可以在群组中再发一条消息,然后刷新API链接。
- 部分群组开启了隐私模式,机器人可能无法读取所有消息,需要将机器人设为群组管理员才能正常监听。
备用方案:
- 如果不想用API获取ID,可以使用 @getidsbot机器人,将其拉入群组后发送
/id@getidsbot,它会直接返回当前群组ID。 - 对于频道,可以查看频道链接中的数字部分(如
t.me/c/1234567890中的1234567890),但这种方法不适用于私有频道。
编写或部署监听脚本:核心功能实现
有了Token和ID,你需要一个能运行在服务器或本地电脑上的脚本,让机器人持续监听指定来源的消息并转发给你。
具体操作说明:
1. 选择编程语言和框架:最常用的是 Python + python-telegram-bot 库,或者 Node.js + node-telegram-bot-api 库。本教程以Python为例。
2. 安装依赖:在命令行运行 pip install python-telegram-bot。如果遇到网络问题,可以使用国内镜像源,如 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-telegram-bot。
3. 编写基础监听脚本:创建一个 monitor.py文件,写入以下核心代码框架(请替换 YOUR_TOKEN、YOUR_USER_ID和 TARGET_CHAT_ID):
`python
from telegram import Update
from telegram.ext import Application, MessageHandler, filters
TOKEN = "YOUR_TOKEN"
USER_ID = 123456789 # 你的用户ID
TARGET_CHAT_ID = -1001234567890 # 目标群组/频道ID
async def monitor(update: Update, context):
# 只处理来自目标聊天的新消息
if update.effective_chat.id == TARGET_CHAT_ID:
msg = f"新消息来自 {update.effective_chat.title}:\n{update.message.text}"
await context.bot.send_message(chat_id=USER_ID, text=msg)
def main():
app = Application.builder().token(TOKEN).build()
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, monitor))
app.run_polling()
if __name__ == "__main__":
main()
`
4. 运行脚本:在终端执行 python monitor.py,如果看到 Starting telegram bot等日志,说明监听已启动。
注意事项/小提示:
- 脚本必须持续运行才能实时监听。可以部署在云服务器(如阿里云、腾讯云)、树莓派或家里24小时开机的电脑上。
- 如果使用免费云服务(如PythonAnywhere),需注意免费套餐的并发限制和睡眠机制,建议选择付费方案或使用VPS。
- 监听群组时,如果群组消息量巨大,机器人可能会被Telegram API限流,建议在代码中添加
time.sleep(0.5)等延迟。
备用方案:
- 不想写代码?可以使用现成的开源项目,如 TG-Monitor或 Telegram-Message-Forwarder,在GitHub搜索即可找到,通常只需配置JSON文件即可使用。
- 如果只是简单转发,也可以使用 IFTTT或 Zapier等自动化工具,但功能有限且可能涉及隐私风险。
设置关键词过滤:精准监听
直接监听所有消息会信息过载。你需要添加关键词过滤功能,只接收包含特定内容的消息。
具体操作说明:
1. 修改监听函数:在原有 monitor函数中添加判断逻辑。例如,只转发包含“空投”或“Airdrop”的消息:
`python
KEYWORDS = ["空投", "Airdrop", "airdrop"]
async def monitor(update: Update, context):
if update.effective_chat.id == TARGET_CHAT_ID:
text = update.message.text or ""
if any(kw.lower() in text.lower() for kw in KEYWORDS):
msg = f"关键词命中!来自 {update.effective_chat.title}:\n{text}"
await context.bot.send_message(chat_id=USER_ID, text=msg)
`
2. 支持多关键词:将 KEYWORDS列表扩展,支持大小写不敏感匹配。如果需要精确匹配,可以将 in改为 ==。
3. 排除特定内容:可以添加黑名单关键词,例如 BLACKLIST = ["广告", "spam"],在转发前检查是否包含黑名单词。
4. 重启脚本:修改代码后,需要停止当前运行的脚本(按 Ctrl+C),然后重新运行才能生效。
注意事项/小提示:
- 关键词不要设置得太短(如单个字母),否则会产生大量误报。
- 如果监听的是英文内容,建议将关键词全部转为小写进行匹配,避免大小写问题。
- 过滤逻辑可以更复杂,比如同时匹配多个关键词(AND逻辑),或使用正则表达式。
备用方案:
- 如果不想改代码,可以使用支持图形界面的机器人管理面板(如 Telegram Bot Dashboard),在网页上配置关键词规则。
- 对于非技术人员,可以寻找提供关键词过滤功能的现成机器人(如 @KeywordsBot),但注意数据隐私。
验证监听效果:确保机器人正常工作
搭建完成后,必须进行实际测试,确认机器人能正确接收并转发消息。
具体操作说明:
1. 发送测试消息:在目标群组/频道中手动发送一条包含关键词的消息(如“测试空投信息”)。
2. 检查你的私人聊天:在Telegram中打开与你的机器人(如 @MyMonitorBot_bot)的对话,应该会看到机器人转发的消息。
3. 检查脚本日志:在运行脚本的终端查看是否有错误输出。常见错误包括:
- Chat not found:说明目标聊天ID错误,或机器人不在该群组中。
- Forbidden: bot was kicked from the chat:机器人被踢出群组,需要重新加入。
- Timed out:网络问题,检查服务器能否访问Telegram API。
4. 测试不同关键词:分别发送包含和不包含关键词的消息,确认过滤功能正常。
注意事项/小提示:
- 首次测试时,建议使用一个测试群组,避免在正式群组中产生干扰。
- 如果机器人没有响应,先检查机器人是否在目标群组中,以及是否被设为管理员(对于私有群组,普通机器人无法读取消息)。
- 测试完成后,记得删除测试消息,避免被群组管理员发现异常。
备用方案:
- 如果无法收到消息,可以尝试在脚本中添加
print(f"收到消息: {update.message.text}")来输出日志,排查问题发生在哪个环节。 - 使用
@BotFather的/setprivacy命令,将机器人设为 Disable(禁用隐私模式),这样机器人可以读取群组中所有消息,即使不是管理员。
常见问题补充
Q1:机器人只能监听文字消息,无法监听图片或文件怎么办?
A:在监听函数中,除了 update.message.text,还可以处理 update.message.caption(图片/文件描述)、update.message.photo(图片)等。需要添加对应的 MessageHandler过滤器,例如 filters.PHOTO或 filters.Document。
Q2:监听机器人被Telegram封禁了怎么办?
A:首先检查是否违反了Telegram服务条款(如滥发消息、监听私密对话)。如果只是误封,可以联系 @BotSupport申诉。建议遵守以下规则:不要频繁发送消息(至少间隔1秒),不要监听包含敏感内容的群组,不要使用机器人进行大规模营销。
Q3:脚本运行一段时间后自动停止了?
A:常见原因包括:服务器网络断开、Python进程被系统杀死(如内存不足)、Telegram API临时故障。建议使用 supervisor(Linux)或 pm2(Node.js)等进程管理工具,确保脚本崩溃后自动重启。
Q4:如何监听多个群组或频道?
A:在代码中将 TARGET_CHAT_ID改为一个列表,例如 TARGET_CHATS = [-100111, -100222],然后在 if判断中使用 if update.effective_chat.id in TARGET_CHATS。
Q5:监听机器人可以用于监控私聊消息吗?
A:不能。Telegram API禁止机器人读取其他用户的私聊消息,除非该用户主动与机器人对话。机器人只能监听它所在的群组、频道以及它自己的私聊对话。监听他人私聊属于严重违规,会导致机器人被封禁。
总结:搭建Telegram监听机器人需要依次完成获取Bot Token、确定目标ID、编写监听脚本、设置关键词过滤和验证测试五个核心步骤,核心在于确保机器人有权限读取消息且脚本持续运行,遇到问题优先排查Token、ID和网络连接。