如何通过Telegram数字用户ID查找用户或向其发送消息
针对Telegram仅留存User ID未留存Chat ID的联系方案
核心前提:只要用户未拉黑/删除你的机器人,User ID本身就可以直接用来发起交互,不需要提前存储Chat ID,二者对普通私发场景是对等的。
- 直接通过Bot API向User ID发送消息
调用sendMessage方法时,chat_id参数直接填你保存的数字User ID即可,只要对方未拉黑你的机器人,消息就可以正常送达。注意要符合Telegram Bot API的规则:不能给超过48小时未主动和机器人交互的用户发送营销类消息,只能发送服务类触发消息,否则会被平台限制接口权限。 - 批量发送前先做有效性校验
可以先调用getChat方法,传入你保存的User ID作为chat_id参数:如果接口返回正常的用户信息,说明用户未拉黑机器人,可正常发消息;如果返回403错误,说明用户已拉黑/删除机器人,直接剔除该ID即可。调用这个接口返回的信息里也包含用户的用户名、名字等公开资料,无需额外跳转个人主页就能获取公开信息。 - 若需要跳转用户个人主页
可以用tg://user?id=xxxxxx的Telegram内部跳转协议,把xxxxxx替换成对应的User ID即可,Telegram客户端打开该链接会直接跳转到对应用户的个人主页,不需要你提前获取对方的username,该协议仅能在Telegram生态内生效。
注意:批量发送消息时要严格控制发送频率,短时间内大量发送消息大概率会被Telegram判定为垃圾消息行为,轻则限制 bot 发信权限,重则直接封禁 bot 账号,建议分批分时段发送,同时提前准备好备用bot应对风控情况。
内容的提问来源于stack exchange,提问作者user3872629
相关产品推荐
相关产品推荐

