Pyrogram在树莓派上触发[400 PEER_ID_INVALID]错误的技术求助
解决Pyrogram在树莓派上的PEER_ID_INVALID错误
问题原因
你猜的没错——树莓派上的Pyrogram客户端本地存储里没有目标机器人(ID:1321800342)的Peer信息。Windows上之前运行过脚本,客户端已经和该机器人建立过对话记录,存储了Peer数据;而树莓派是全新环境,客户端无法识别这个陌生的ID,就会抛出PEER_ID_INVALID和KeyError。
解决思路
1. 手动初始化Peer信息
在树莓派上先运行一段极简脚本,让客户端主动获取目标机器人的信息,把Peer数据写入本地存储:
from pyrogram import Client app = Client("my_account") async def init_target_peer(): await app.start() # 获取目标机器人的聊天信息,自动存入本地session await app.get_chat(1321800342) await app.stop() app.run(init_target_peer())
运行一次这个脚本后,再启动你的主脚本,客户端就能识别这个ID了。
2. 迁移Windows上的Session文件
Windows运行脚本后,会在脚本目录生成my_account.session、my_account.session-journal等文件,把这些文件复制到树莓派上脚本的同一目录下。这样树莓派的客户端直接复用已有存储的Peer信息,无需重新初始化。
3. 改用机器人用户名发送消息
如果目标机器人有公开用户名(比如@MyTestBot),直接用用户名替代ID,Pyrogram会自动向Telegram服务器查询Peer信息,不需要本地存储记录:
# 把原代码里的send_message参数改成用户名 await app.send_message("@MyTestBot", message.text)
内容的提问来源于stack exchange,提问作者Илья Лян
相关产品推荐
相关产品推荐

