2016-08-06 75 views
1

當我從寫BOT用戶消息電報機器人更新我希望看到與用戶ID BOT的幾個ID,但是,我看到這樣的更新:發送給Telegram Bot的傳入消息是否包含該Bot的任何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(不是機器ID),聊天ID由於某種原因等於用戶ID。那麼是否有人知道如何在更新對象期間獲取bot ID?

回答

3

這是一個JSON對象,機器人收到電報時,用戶將消息發送給機器人。(因爲我從你的問題理解)

這是完全正常的。你問爲什麼? 有兩個原因:

1-當USER送東西的機器人,在第一Telegram服務器搶 ,並將其重新發送給bot應用在自己的服務器上。因此,這JSON對象 包含發送者(用戶)的ID邏輯。(爲什麼?)這是user_id和NOT bot_id因爲bot接收消息,應該知道是誰發送 it.This號(USER_ID)告訴bot有關發件人。

2-爲什麼chat_iduser_id(發件人)是相等的?因爲當用戶使用機器人在私密消息中發送 時,他/她在私密聊天中發送到機器人,所以 這兩個數字是相等的,但是當用戶發送一個組中的東西時,你的機器人也是其成員,有兩個不同的數字: chat_id這代表group_id這裏和user_id(sender_id) 告訴你的機器人誰發送消息。

我們可以使用這兩個數字的相等性檢查來找出用戶是在與bot的私人聊天中發送還是在組中發送。

我不知道從Telegram發送到Bot的任何JSON對象都包含任何有關bot_id的字段。除了一些特定的方法,如getMe方法(它返回有關您的機器人的基本信息)

+0

所以,我是否無法檢查消息來自用戶傳遞機器人還是直接從用戶? – sphinks

+0

@sphinks你的問題不清楚給我,請解釋。什麼是'用戶通過機器人'? –

+0

我的意思是這樣的情況:用戶向機器人寫入一些消息,並將機器人傳遞給後端。所以據我所知,bot並沒有在消息對象中提供任何消息已經通過的消息。 – sphinks