如何从提及中获取用户的ID(@User)

时间:2016-08-14 12:01:38

标签: telegram-bot

例如,如果用户发送机器人/text @USER,我如何获得@ USER的ID并发送消息?

问题与this不同,因为该问题的答案要求所述用户(@USER)已经告知机器人/所有者已经知道用户的身份。

1 个答案:

答案 0 :(得分:1)

有三个条件:

  

1 - @user之前未订阅您的机器人(之前没有与您的机器人发起聊天,或者在与机器人聊天后它会阻止机器人:在这种情况下,您永远不能发送任何类型的消息给@user

     

2 - @user不存在或不正确。如您所知,电报用户订阅了电话和名字(至少),并且他/她不能拥有任何@user ID:在这种情况下,没有用户名要发送。

     

3 - @user已存在且已经是您的机器人订阅者。在这种情况下,您应该保存所有订阅者chat_id及其相关user_name,因为他们会在数据库中向您的机器人发送一些消息,因为这些数据是您从用户收到的每条消息的一部分。因此,要发送到@user,您应该从数据库中找到相关的chat_id。(非Telegram Bot API方法使用@username,但他们使用chat_id

当用户发送/1命令时,这是来自Telegram的示例JSON响应,因为您看到电报总是附加发件人chat_idfirs_namelast_name和{{1} (如果存在)机器人收到的每条消息:

This is a sample JSON response from Telegram when user send <code>/1</code> command

  

<强>已更新

     

由于用户可能会在此期间更改username,因此最好   每封邮件都会更新您的@username&lt; - &gt; chat_id数据库   接收。