很多用户在使用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_TOKENYOUR_USER_IDTARGET_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-MonitorTelegram-Message-Forwarder,在GitHub搜索即可找到,通常只需配置JSON文件即可使用。
  • 如果只是简单转发,也可以使用 IFTTTZapier等自动化工具,但功能有限且可能涉及隐私风险。

设置关键词过滤:精准监听

直接监听所有消息会信息过载。你需要添加关键词过滤功能,只接收包含特定内容的消息。

具体操作说明:

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.PHOTOfilters.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和网络连接。