如何检测用户是否删除Telegram Bot聊天?
是否可以通过API检查是否有人删除了Bot聊天电报如何检测用户是否删除Telegram Bot聊天?,telegram,telegram-bot,Telegram,Telegram Bot,是否可以通过API检查是否有人删除了Bot聊天电报 我的测试:当前如果用户删除聊天,新消息不会停止发送给用户。否。只有在向用户发送内容时出错 如果用户阻止聊天,即使调用sendChatAction方法也不会返回错误: $ curl https://api.telegram.org/bot***/sendChatAction -d 'chat_id=7975895' -d "action=typing" {"ok":true,"result":true} $curlhttps://api.tele
我的测试:当前如果用户删除聊天,新消息不会停止发送给用户。否。只有在向用户发送内容时出错 如果用户阻止聊天,即使调用sendChatAction方法也不会返回错误: $ curl https://api.telegram.org/bot***/sendChatAction -d 'chat_id=7975895' -d "action=typing" {"ok":true,"result":true} $curlhttps://api.telegram.org/bot***/sendChatAction-d'chat\u id=7975895'-d“action=typing” {“确定”:正确,“结果”:正确} $curlhttps://api.telegram.org/bot***/sendMessage-d'chat_id=81083738'-d“text=ololo” {“ok”:false,“error_code”:403,“description”:“[错误]:Bot被用户阻止”}
您可以获取
getChat
method()。如果用户停止并阻止bot,此方法返回403
status其他答案中的某人建议使用getChat方法
出于两个原因,请勿使用它:
- 即使它们可以返回一些特殊错误,它们也可以随时更改。相反,任何发送方法都应该是安全的!(这是我几个月前联系官方支持部门得到的答案)
- 从我的使用情况来看,我知道getChat结果可能会被缓存很多周,并且不会有一个安全的结果。i、 即使在他们从群中踢出机器人一个月后,我仍然能够使用getChat定期获得群的结果
如果要执行类似操作,请记住在for循环中添加睡眠,因为在达到限制之前,每秒只能使用30个sendChatAction。这通过新的电报更新解决: 2021年3月9日 机器人API 5.1 添加了两种新的更新类型 添加了有关聊天中成员状态更改的更新,由ChatMemberUpdated类和更新类中的my_chat_成员和chat_成员字段表示。bot必须是聊天中的管理员才能接收有关其他聊天成员的聊天成员更新。默认情况下,只有my_chat_成员更新有关e机器人本身被接收
更改日志链接:谢谢,你对我的测试有什么想法吗?你可以继续发送消息,希望用户能够解锁你的bot。删除聊天记录后,似乎需要几分钟时间才能将其传播到所有服务器。我可以声明sendChatAction非常适用于此,如果用户阻止了bot,则正确返回即使他删除了该帐户。请检查我在此问题帖子中的答案。这是不正确的。您仍将收到聊天数据。对于我,sendChatAction返回异常仅适用于被阻止的bot,对于已删除的bot,它返回所有操作的true。这可能意味着API从此时起已更改。 $ curl https://api.telegram.org/bot***/sendMessage -d 'chat_id=81083738' -d "text=ololo" {"ok":false,"error_code":403,"description":"[Error]: Bot was blocked by the user"}