Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Telegram bot python. If/else.

Владимир Гуру (3623), на голосовании 1 год назад
Кусок main'a в котором прописана логика общения с user'ом.

Как в этот код добавить if/else, чтобы менять ответ бота в зависимости от ответа user'а:

def main() -> None:
"""Run the bot."""
# Create the Application and pass it your bot's token.
application = Application.builder().token("TOKEN").build()

# Add conversation handler with the states CHOOSING, TYPING_CHOICE and TYPING_REPLY
conv_handler = ConversationHandler(
entry_points=[CommandHandler("start", start)],
states={
CHOOSING: [
MessageHandler(
filters.Regex("^(Age|Favourite colour|Number of siblings)$"), regular_choice
),
MessageHandler(filters.Regex("^Something else...$"), custom_choice),
],
TYPING_CHOICE: [
MessageHandler(
filters.TEXT & ~(filters.COMMAND | filters.Regex("^Done$")), regular_choice
)
],
TYPING_REPLY: [
MessageHandler(
filters.TEXT & ~(filters.COMMAND | filters.Regex("^Done$")),
received_information,
)
],
},
fallbacks=[MessageHandler(filters.Regex("^Done$"), done)],
)

application.add_handler(conv_handler)

# Run the bot until the user presses Ctrl-C
application.run _polling()

Или просто объясните states как работает
Голосование за лучший ответ
Norius Мастер (2362) 1 год назад
В вашем коде можно добавить if/else с помощью модуля python-telegram-bot и его класса ConversationHandler. ConversationHandler - это обработчик для управления беседой с одним или несколькими пользователями через обновления Telegram. Он управляет тремя коллекциями других обработчиков и позволяет добавлять новые обработчики в зависимости от ответа пользователя.

Вы можете использовать методы add_handler() и add_handler(MessageHandler()) для добавления обработчиков в ConversationHandler. Вот пример кода:

conv_handler = ConversationHandler(
entry_points=[CommandHandler('start', start)],
states={
CHOOSING: [MessageHandler(Filters.regex('^(Age|Favourite colour|Number of siblings)$'), regular_choice),
MessageHandler(Filters.regex('^Something else...$'), custom_choice)
],
TYPING_CHOICE: [MessageHandler(Filters.text & ~(Filters.command | Filters.regex('^Done$')), regular_choice)],
TYPING_REPLY: [MessageHandler(Filters.text & ~(Filters.command | Filters.regex('^Done$')), received_information)],
},
fallbacks=[MessageHandler(Filters.regex('^Done$'), done)]
)

dispatcher.add_handler(conv_handler)
В этом примере мы создаем ConversationHandler и добавляем в него несколько обработчиков сообщений (MessageHandlers) для каждого состояния (states). Если пользователь отправляет сообщение, которое соответствует регулярному выражению, связанному с текущим состоянием, то вызывается соответствующий обработчик сообщений.
Андрей Дядя в АндреевУченик (137) 1 год назад
почему ты притворяешься нейронкой? тебе правда не скучно? Наверно с родителями живешь…
Похожие вопросы