12
Сен
2021

python-telegram-bot, ConversationHandler(states) переходит сразу к последнему ключу

from telegram import Update
from telegram import (ReplyKeyboardMarkup, ReplyKeyboardRemove)

from telegram.ext import (Updater, CommandHandler, MessageHandler, Filters,
                          ConversationHandler)
NAME, GENDER, AGE = 0, 0, 0
user_data = {}


def start_handler(update: Update, context):
    update.message.reply_text(
        "Введите ваше имя",
        reply_markup=ReplyKeyboardRemove(),
    )
    return NAME


def name_handler(update: Update, context):
    user_data[NAME] = update.message.text

    update.message.reply_text("Введите пол")

    return GENDER


def age_handler(update: Update, context):
    user_data[GENDER] = update.message.text
    update.message.reply_text("Введите возраст")

    return AGE


def finish_handler(update: Update, context):
    user_data[AGE] = update.message.text

    update.message.reply_text(f"registered successfully, you are {user_data[NAME]}, {user_data[GENDER]}, "
                              f"{user_data[AGE]}")

    return ConversationHandler.END


def cancel_handler(update: Update, context):
    print("bye")


def main():
    updater = Updater(
        token="token",
        use_context=True,
    )

    dp = updater.dispatcher

    conv_handler = ConversationHandler(
        entry_points=[
            CommandHandler("start", start_handler),
        ],
        states={
            NAME: [MessageHandler(Filters.all, name_handler)],
            GENDER: [MessageHandler(Filters.all, age_handler)],
            AGE: [MessageHandler(Filters.all, finish_handler)]
        },
        fallbacks=[CommandHandler("cancel", cancel_handler)],
    )

    dp.add_handler(conv_handler)

    updater.start_polling()
    updater.idle()


main()

спрашивает имя а потом сразу переходит к последнему ключу не отправляя промежуточные сообщения

Источник: https://ru.stackoverflow.com/questions/1327710/python-telegram-bot-conversationhandlerstates-%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4%D0%B8%D1%82-%D1%81%D1%80%D0%B0%D0%B7%D1%83-%D0%BA-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%BC%D1%83-%D0%BA%D0%BB

Тебе может это понравится...

Добавить комментарий