如何为Telegram Bot设置监听器?实现程序化获取消息
解决方案
方法1:用普通用户账号通过MTProto库监听
Telegram不允许Bot间交互,但普通用户账号可以和任意Bot对话,所以可以用支持MTProto协议的库模拟用户行为来监听目标天气Bot的消息:
- 选Python的
Pyrogram或Telethon这类库,登录自己的普通用户账号(需要手机号收验证码完成验证)。 - 核心步骤:
- 从my.telegram.org获取自己的API ID和API Hash,用于初始化客户端。
- 监听新消息事件,过滤出目标天气Bot的对话。
- 收到消息后直接提取内容做后续处理。
- 示例代码(Telethon):
from telethon import TelegramClient, events # 替换成自己的API凭证和目标Bot用户名 API_ID = 123456 API_HASH = 'your_api_hash' TARGET_BOT = '@your_weather_bot' client = TelegramClient('weather_listener', API_ID, API_HASH) @client.on(events.NewMessage(chats=TARGET_BOT)) async def catch_weather_msg(event): msg_content = event.message.text print(f"天气Bot新消息:{msg_content}") # 这里加你的处理逻辑,比如存数据库、解析数据等 client.start() client.run_until_disconnected()
方法2:通过自动转发+Bot监听中转
如果需要用自己的Bot处理消息,可以通过普通用户账号做中转:
- 用普通用户账号设置自动转发规则,把天气Bot的所有消息转发到一个私有频道或者你的Bot对应的聊天窗口。
- 你的Bot监听这个私有频道/聊天,就能获取到转发过来的天气Bot消息。
- 自动转发可以用Telethon/Pyrogram实现,也可以用Telegram自带的转发功能手动设置规则。
注意事项
- 必须用普通用户账号对接目标天气Bot,这是绕开Bot间交互限制的核心前提。
- 使用MTProto库时别搞频繁请求或异常操作,避免账号被Telegram封禁。
- API ID和API Hash是个人专属凭证,别泄露给他人。
内容的提问来源于stack exchange,提问作者Momo Setti
相关产品推荐
相关产品推荐

