当我从电报机器人获得更新并将用户消息写入机器人时,我希望看到一些具有用户ID的机器人ID,但是,我看到了这样的更新:
Update{update_id=515450315,
message=Message{message_id=117,
from=User{id=1234567890, first_name='Name', last_name='Surname', username='null'},
date=1470510167,
chat=Chat{id=1234567890, type=Private, first_name='Name', last_name='Surname', username='null', title='null'},
...
正如文档所述,User
是消息的发送者(用户或机器人)。但在这种情况下,用户ID是实际用户ID(不是bot id),并且由于某种原因,聊天ID等于用户ID。那么有人知道如何在更新对象中获取bot id吗?
答案 0 :(得分:3)
这是一个JSON
对象,当用户向机器人发送消息时,机器人会收到电报。(据我的问题所理解)
这完全正常。你问为什么? 有两个原因:
1-当
USER
向bot发送内容时,首先Telegram
服务器抓住 它并将其重新发送到自己服务器上的bot
应用。所以这个JSON
对象 逻辑上包含发送者(用户)ID。(为什么?)它是user_id
而不是bot_id
因为bot
收到消息,应该知道是谁发送的 它。这个号码(user_id)告诉bot
发件人。2-为什么
chat_id
和user_id
(发件人)相等?因为当用户是 在与bot的私人消息中,他/她在私人聊天中发送到bot,所以 这两个数字相等,但是当用户在组中发送内容时 你的机器人也是它的成员,有两个不同的数字: 此处代表chat_id
的{{1}}和group_id
(sender_id) 告诉您发送邮件的机器人。
我们可以使用这两个数字的平等检查来找出用户与机器人的私人聊天或发送群组。
我不喜欢'了解从user_id
发送到Telegram
的任何JSON对象都包含Bot
的任何字段。除了某些特定的方法,如getMe
方法。(它返回有关您的机器人的基本信息)