发送到Telegram Bot的传入消息是否包含该机器人的任何ID?

时间:2016-08-06 19:45:48

标签: telegram telegram-bot

当我从电报机器人获得更新并将用户消息写入机器人时,我希望看到一些具有用户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吗?

1 个答案:

答案 0 :(得分:3)

这是一个JSON对象,当用户向机器人发送消息时,机器人会收到电报。(据我的问题所理解)

这完全正常。你问为什么? 有两个原因:

  

1-当USER向bot发送内容时,首先Telegram服务器抓住   它并将其重新发送到自己服务器上的bot应用。所以这个JSON对象   逻辑上包含发送者(用户)ID。(为什么?)它是user_id而不是   bot_id因为bot收到消息,应该知道是谁发送的   它。这个号码(user_id)告诉bot发件人。

     

2-为什么chat_iduser_id(发件人)相等?因为当用户是   在与bot的私人消息中,他/她在私人聊天中发送到bot,所以   这两个数字相等,但是当用户在组中发送内容时   你的机器人也是它的成员,有两个不同的数字:   此处代表chat_id的{​​{1}}和group_id(sender_id)   告诉您发送邮件的机器人。

我们可以使用这两个数字的平等检查来找出用户与机器人的私人聊天或发送群组。

我不喜欢'了解从user_id发送到Telegram的任何JSON对象都包含Bot的任何字段。除了某些特定的方法,如getMe方法。(它返回有关您的机器人的基本信息)