Pyrogram处理部分频道消息时持续触发Peer id无效错误
Pyrogram Peer ID无效错误排查与解决办法
错误原因
从错误日志和消息数据来看,问题核心在于Pyrogram对频道Peer ID的范围判定逻辑:
- 收到的频道原始ID为
2266047364,生成的标准频道Peer ID为-1002266047364 - 旧版本Pyrogram的
get_peer_type函数中,频道Peer ID的判定范围被限制在-1009999999999 <= peer_id <= -100000000000,而-1002266047364小于该范围最小值,因此被判定为无效ID - 本质是旧版本Pyrogram未适配Telegram新增的10位以上长度的频道ID
解决办法
- 优先升级Pyrogram到最新版本:新版本已修复频道ID范围限制问题,完全支持更长的频道ID。执行升级命令:
pip install --upgrade pyrogram tgcrypto - 临时修复(不推荐):若无法升级,可手动修改Pyrogram安装目录下的
utils.py文件,调整get_peer_type函数中的频道ID范围,例如:elif -100999999999999 <= peer_id <= -100000000000: return PeerType.CHANNEL - 预加载频道信息:调用
get_chat方法获取该频道的完整信息,存入Pyrogram本地存储,避免后续处理消息时触发resolve_peer失败:await app.get_chat(-1002266047364)
内容的提问来源于stack exchange,提问作者домашнее животное
相关产品推荐
相关产品推荐

