введите этап 1 -> «Вы вошли в этап 1», войдите в этап 2 -> « Вы вошли на этап 2", сработал конец разговора -> "Завершение бота"
Но я не могу найти способ, которым библиотека сделает это чисто, поэтому прибегаю к отправке сообщения из функции, которая вызывает новый этап.
start_handler -> «Вы вошли на этап 1» -> Состояние триггера 1 stage1_handler -> «Вы вошли на этап 2» -> Состояние триггера 2 stage2_handler -> «Конец бота " -> Завершает разговор
Код: Выделить всё
if name == 'main':app = Application.builder().token(API_KEY).build()
# Handler Creations
# COMAND HANDLERS
start_handler = CommandHandler('start', start_command)
# REGISTRATION HANDLERS
stage1_handler = MessageHandler(filters.TEXT, stage1_hander)
stage2_handler = MessageHandler(filters.TEXT, stage2_hander)
# Main Game Convo
conv_handler = ConversationHandler(
entry_points=[start_handler],
states={
STAGE_1: [stage1_handler],
STAGE_2: [stage2_handler]
}
)
app.add_handler(conv_handler)
# Polls the bot
print('Polling...')
app.run_polling(poll_interval=3)
async def start_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
print(f" Start command triggered")
await update.message.reply_text(
text = "You entered Stage 1",
)
return STAGE_1
async def stage1_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
print(f" Stage 1 triggered")
await update.message.reply_text(
text = "You entered Stage 2",
)
return STAGE_2
async def stage2_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
print(f" Stage 2 triggered")
await update.message.reply_text(
text = "Exiting Bot",
)
return -1
Подробнее здесь: https://stackoverflow.com/questions/787 ... on-bot-lib