如何使电报机器人在处理“命令消息”后收听“正常消息”

时间:2020-04-15 20:35:08

标签: python python-3.x telegram python-telegram-bot

我有一个电报机器人,它处理纯文本,存储文本,对其进行处理,然后返回结果。输出是正确的,但是,我希望机器人以不同的方式答复诸如“ / start”,“ / help”之类的命令消息。我也成功地实现了这一点,例如,一旦完成/ start,它就会产生所需的输出,然后继续处理该文本,就好像它是纯文本一样(在命令情况下是不需要的)。这是下面的一些代码,例如,

@bot.message_handler(commands=['start'])
def send_welcome(message):
    msg = bot.reply_to(message, """\
Hi there, I am Humobot.
What do you want to verify?
""")
    bot.register_next_step_handler(msg,bot.set_update_listener(handle_messages))


##....  similar functions for /help and functions to process the info in message....


def handle_messages(messages):
    for message in messages:
        # Do something with the message
        bot.send_message(chat_id=message.chat.id,
                         text="Hold on Humo is running for you, he is still new and can barely walk")
        process_check_info(message)


bot.set_update_listener(handle_messages)
bot.polling()
bot.enable_save_next_step_handlers(delay=2)
bot.load_next_step_handlers()

bot.polling()

我认为问题出在bot.register_next_step_handler(msg,bot.set_update_listener(handle_messages))行中 我的可调用函数是set_update_listener(handle_messages),我不确定如何告诉机器人只是等待下一条消息,然后如果它是命令,则仅将其作为命令处理,如果是纯文本,则将其仅作为文本处理(后一部分) ,实际上工作正常)

我希望问题清楚。

1 个答案:

答案 0 :(得分:0)

环顾四周,我已经解决了我的问题,而错误是由于

bot.set_update_listener(handle_messages)
bot.polling()
bot.enable_save_next_step_handlers(delay=2)
bot.load_next_step_handlers()

必须删除。