例如,如果用户发送bot/text@USER
如何获取@USER的id并向他们发送消息?
与此不同的问题,因为该问题的答案要求所述用户(@USER)已经向机器人/所有者发送消息以知道用户的id。
有3个条件:
1-@user
之前没有订阅您的机器人(之前没有发起与您的机器人聊天,或者在与您的机器人聊天后它确实阻止了您的机器人:在这种情况下,您永远不能向该@user
发送任何类型的消息。
2-@user
不存在或不正确。如您所知,电报用户使用电话和名字(至少)订阅,并且他/她不能有任何@user
id:在这种情况下,没有要发送的用户名。
3-@user
存在并且已经是您的机器人订阅者。在这种情况下,您应该保存所有订阅者chat_id
及其相关的user_name
,因为它们向数据库中的机器人发送一些消息,因为这些数据是您从用户那里收到的每条消息的一部分。因此,要发送到该@user
,您应该从DB中找到相关的chat_id
。(非Telegram BotAPI
方法使用@username
,但它们使用chat_id
)
这是用户发送/1
命令时TelegramJSON响应示例,如您所见,Telegram始终将senderchat_id
、firs_name
、last_name
和username
(如果存在)附加到bot收到的每条消息中:
更新:
由于用户可能会在这段时间内更改他们的@username
,因此最好更新您的chat_id