【问题标题】:How do I wait for user reply? (Telegram bot with python-telegram-bot)如何等待用户回复? (带有 python-telegram-bot 的 Telegram 机器人)
【发布时间】:2020-06-06 22:16:47
【问题描述】:

如何让机器人等待回复以保存它?我的目标是将名称保存在我已经完成的数据库中。例如,

User: /name
Bot: What do you want to name this dog?
User: dog
Bot: Dog saved as dog.
def name(update, context):
    update.message.reply_text("What do you want to name this dog?")

保存回复到数据库。

我知道如果我使用 return(update.message.text),它将返回 /name,而不是 dog,因为这是用户键入 /name 时的最新消息。

我们将不胜感激!

【问题讨论】:

    标签: python bots telegram python-telegram-bot


    【解决方案1】:

    你可以使用ConversationHandler来实现它。

    这是一个工作示例代码:

    from telegram.ext import (Updater, CommandHandler, MessageHandler, Filters,
                              ConversationHandler)
    
    TOKEN = " ... "
    
    NAME, DOG_SAVE = range(2)
    
    def start(update, context):
        update.message.reply_text(
            'send /name to activate save a dog name'
        )
        return NAME
    
    def name(update, context):
        update.message.reply_text('What do you want to name this dog?')
    
        return DOG_SAVE
    
    def dog_save(update, context):
        name = update.message.text
        update.message.reply_text(f'Dog saved as {name}')
    
        return ConversationHandler.END
    
    def main():
        updater = Updater(TOKEN, use_context=True)
    
        dp = updater.dispatcher
    
        conv_handler = ConversationHandler(
            entry_points=[CommandHandler('start', start)],
            fallbacks=[],
    
            states={
                NAME: [CommandHandler('name', name)],
                DOG_SAVE: [MessageHandler(Filters.text, dog_save)],
            },
        )
    
        dp.add_handler(conv_handler)
    
        updater.start_polling()
        updater.idle()
    
    
    if __name__ == '__main__':
        main()
    

    您可以找到更多示例here

    示例输出:

    【讨论】:

      猜你喜欢
      • 2018-10-05
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      相关资源
      最近更新 更多