Pyrogram UserBot莫名无法接收特定频道消息的技术求助
排查Pyrogram UserBot无法接收特定频道消息的方案
1. 确认账号的频道订阅与权限状态
- 检查UserBot所用账号是否已订阅目标频道,且未被频道设置静音/屏蔽(客户端的静音设置会同步影响UserBot的消息推送)。
- 调用
get_chat_member(chat_id, app.me.id)查看账号在频道内的身份,确保是普通成员及以上权限,部分频道可能限制非管理员的消息推送。
2. 验证Pyrogram版本与会话有效性
- 升级Pyrogram到最新稳定版:
pip install --upgrade pyrogram tgcrypto,旧版本可能存在Telegram API兼容性问题。 - 重新生成会话文件:备份原
session.session后,重新执行登录流程生成新会话,避免会话过期或损坏导致的推送异常。
3. 排查Telegram侧的推送限制
- 用同一账号在官方客户端测试,确认目标频道的消息能实时接收,排除频道本身设置(如消息延迟、仅特定用户可见)的问题。
- 在
app.run()中显式指定worker数量:app.run(workers=4),避免单worker处理阻塞导致消息丢失。
4. 底层更新监听调试
- 添加原始更新处理器,确认是否真的未收到频道推送:
如果这里能捕获到频道更新,说明问题出在消息过滤或处理环节;如果没有捕获,说明账号未收到Telegram的推送通知。@app.on_raw_update() def handle_raw_update(client, update, users, chats): print(f"Raw update: {update}")
5. 适配非文本消息的日志记录
- 目标频道可能发送媒体、贴纸、投票等非文本消息,原日志仅打印
message.text会导致这类消息无日志输出。修改日志代码:
同时保留log(client,f"Received message: {message.text or '[非文本消息]'} \nfrom: {message.chat.title}")print(message)输出完整消息结构,确认是否有非文本消息被遗漏。
内容的提问来源于stack exchange,提问作者Alex Pavliuk
相关产品推荐
相关产品推荐

