Telegram bot中并发回复的有效处理

时间:2017-02-18 19:40:40

标签: telegram telegram-bot python-telegram-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不可用。传出的消息文本与回复中的文本不匹配(例如,它们剥离标记等)。

是否有一种可靠的方法可以理解此传入消息是否是对最新传出消息的回复?

1 个答案:

答案 0 :(得分:0)

可以在发送消息后读取message_id(例如,从python-telegram-bot的sendMessage方法返回更新的消息)。所以可以保存它并与reply_to_message.message_id进行比较。