如何通过手机号获取未互动Telegram用户ID?附报错及代码
问题解答:无法通过未互动通讯录用户的手机号获取Telegram ID及报错处理
核心疑问解答
首先明确说:你没办法获取到这个用户的Telegram ID,这是由Telegram的隐私机制决定的:
- 虽然对方在你的通讯录里,但对方并不知道你的手机号(也就是你不在对方的通讯录中),加上你们从未有过互动,再结合Telegram默认的隐私设置(不允许陌生人通过手机号定位到自己),平台不会向你暴露该用户的实体信息。
- 只有满足以下任一条件时,你才能通过手机号获取对方的ID:
- 对方把你的手机号也加入了他的通讯录;
- 对方调整了隐私设置,允许「任何人」通过手机号找到自己;
- 你已经向对方发送过消息(哪怕对方还没查看或回复),建立了互动关系。
报错原因与代码优化
你遇到的 ValueError: Cannot find any entity corresponding to "+xxxxxxxxxxx" 报错,本质就是上面提到的权限问题——Telegram API找不到对应手机号的用户实体,因为平台限制了你的访问权限。
可以给代码加上容错处理,避免程序直接崩溃,同时清晰反馈问题:
for mobile in newuser['Mobile']: mob = '+91' + str(mobile) try: user = await clients.get_entity(mob) print(user) except ValueError as e: print(f"无法获取手机号 {mob} 对应的用户实体:{str(e)}")
额外提示
- 不要尝试绕过Telegram的隐私规则,这不仅违反平台条款,还可能导致你的账号被临时限制甚至永久封禁。
- 如果确实需要联系该用户,建议通过其他渠道告知对方你的手机号,让对方添加你到通讯录;或者直接尝试给对方发送Telegram消息(如果对方允许陌生人发消息),互动后就能正常获取其ID了。
内容的提问来源于stack exchange,提问作者Swarnim Kumar
相关产品推荐
相关产品推荐

