如何等待用户回复? (带有 python-telegram-bot 的电报机器人)

How do I wait for user reply? (Telegram bot with python-telegram-bot)

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

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),它会 return /name,而不是狗,因为这是用户键入 [=14 时的最新消息=].

不胜感激!

您可以使用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

示例输出: