You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telethon通过ID加群成员调用get_entity报找不到输入实体错误

报错原因
  • 核心原因是Telethon的实体访问机制限制:get_entity 方法不会主动向Telegram服务器请求未知用户的信息,只会优先读取本地会话缓存里的实体数据。如果你的账号从来没有和目标ID的用户产生过交集(没有共同群、没有过消息往来、没有搜索访问过对方主页),本地缓存里就没有该用户对应的access_hash访问凭证,自然无法解析出有效实体,就会抛出找不到输入实体的错误。
  • 你代码里写了无差别捕获所有异常的裸except,把具体的报错栈全部吞掉了,所以之前只会返回模糊的“添加过程出现错误”提示,看不到真实报错原因。
  • 补充说明:Telegram的接口要求,操作用户实体时必须同时传入用户数字ID和对应账号视角下的access_hash,只传纯数字ID本身就不符合接口调用规范,就算ID完全正确也无法完成请求。
修复步骤
  1. 先修改异常捕获逻辑,不要吞掉具体报错,方便后续排查问题,把原来最后一段通用异常捕获替换成如下代码:
except Exception as e:
    print(f'{error}{r} 添加出错,具体信息:{str(e)}{rs}')
    continue
  1. 解决纯ID无法解析实体的问题:
    • 如果你是从其他群组爬取的目标用户ID,爬取阶段就要把每个用户对应的access_hash字段和ID一起存下来,不要只存纯数字ID。
    • 如果目标用户和你在同一个已知群组,可以先调用一次client.get_participants(共同群实体)刷新加密实体缓存,缓存写入后再调用get_entity就能正常识别对应用户。
    • 拿到有效ID和access_hash后,不要直接传整数ID给get_entity,用InputPeerUser构造合法入参再发起邀请,示例代码如下:
from telethon.tl.types import InputPeerUser
from telethon.tl.functions.channels import InviteToChannelRequest

# 替换成你自己拿到的实际用户ID、access_hash、目标群实体
user_to_add = InputPeerUser(user_id=int(user['user_id']), access_hash=int(user['access_hash']))
client(InviteToChannelRequest(target_group_entity, [user_to_add]))
  1. 注意避坑:
    • 你原来代码里每次邀请后休眠20秒的设置是合理的,不要缩短休眠时间,否则极易触发PeerFlood风控,导致账号功能被限制。
    • 部分用户开启了“禁止被他人拉入群组”的隐私设置,这类用户就算实体解析正确也无法邀请,属于正常情况,直接跳过即可。
    • 新注册的账号接口权限受限,不要用新号批量拉人,否则很容易被永久封禁功能。

内容的提问来源于stack exchange,提问作者noni2724

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 17:15:45