2017-02-18 75 views
0

我有我的電報BOT一問一答的遊戲,我有併發答覆的問題:在電報機器人併發答覆的有效處理

bot: question_1 
player_1: answer_1_to_question_1 
bot: answer correct, question_2 
player_2: delayed answer to question_1 <--- problem 
bot: invalid answer to question_2  <--- problem 

所以問題是,player_2發送到的第一個問題的答覆,並且由於遲到,當他期待第二個問題的答案時,它就會到達機器人。

我想只接受第一個答案而忽略第二個答案,如果是非實際問題。有一個在電文一個reply_to_message結構:

{'reply_to_message': {'from': {'username': u'Bot', 'first_name': u'', 'id': 1}, 'text': u'some text', 'chat': {'type': u'group', 'id': -2, 'title': u''}, 'date': 1487442200, 'message_id': 10351144} 

我想保存每個聊天什麼的信息是發送有持續而忽略了迴應,如果它沒有最後的消息相匹配。但問題是發送消息的message_id在發送之前不可用。傳出的消息文本與回覆中的文本不匹配(例如,它們會剝離標記等)。

有一個可靠的方法來了解這個傳入消息是對最新傳出消息的答覆嗎?

回答

0

可能在發送消息之後立即讀取message_id(例如,從python-telegram-bot的sendMessage方法返回更新的消息)。因此可以將其保存並與reply_to_message.message_id進行比較。