提问者:小点点

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


例如,如果用户发送bot/text@USER如何获取@USER的id并向他们发送消息?

与此不同的问题,因为该问题的答案要求所述用户(@USER)已经向机器人/所有者发送消息以知道用户的id。


共1个答案

匿名用户

有3个条件:

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

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

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

这是用户发送/1命令时TelegramJSON响应示例,如您所见,Telegram始终将senderchat_idfirs_namelast_nameusername(如果存在)附加到bot收到的每条消息中:

更新:

由于用户可能会在这段时间内更改他们的@username,因此最好更新您的chat_id