使用Telethon发送消息报错Invalid Peer的原因及解决求助
问题解决:Telethon切换账号发送消息时出现「Invalid Peer」错误
问题情况
用Telethon Client API发送消息,已从群组抓取用户保存到.csv文件。使用自身API凭据时一切正常,但切换到另一账号及对应API凭据后,触发报错:
[!] Error: An invalid Peer was used. Make sure to pass the right peer type and that the value is valid (for instance, bots cannot start conversations) (caused by SendMessageRequest)
核心原因分析
你推测的「跨账号抓取用户再发送」确实是关键问题:
- Telethon中的Peer(用户/对话实体)与当前登录账号的会话绑定。用账号A抓取的用户Peer信息包含账号A会话特有的标识,在账号B的会话中无法被正确识别。
- 若新切换的账号是机器人账号,Telegram限制机器人不能主动发起对话给未互动过的用户,这也会触发该错误。
解决方案
方案1:用新账号重新抓取用户
直接用目标发送账号登录Telethon,重新从群组抓取用户并生成CSV。这样获取的Peer信息基于新账号会话,发送时不会出现识别问题。
方案2:修改CSV存储内容,发送时重新解析Peer
如果要复用之前的CSV,不要存储Telethon返回的Peer对象,改为存储用户的user_id、username或phone_number(这些是用户的全局标识)。发送时,通过新账号的客户端实例重新获取有效的Peer:
# 假设CSV中存储的是user_id user_id = 123456789 peer = await client.get_input_entity(user_id) await client.send_message(peer, "你的消息内容")
方案3:检查新账号类型
确认切换的账号是普通用户账号,而非机器人账号。如果是机器人,需要先让用户主动给机器人发消息,才能发起对话。
内容的提问来源于stack exchange,提问作者user12601679
相关产品推荐
相关产品推荐

