Бот Telegram ничего не делает после одного ответа

1

Я новичок в python и пытаюсь создать бот-чат на телеграмме, которая запрашивает у пользователя их пол и возраст. Однако мой бот ничего не делает после достижения возраста пользователя. Мои функции для пола и возраста:

def gender(bot, update):
# Get gender from user
user = update.message.from_user
logger.info("Gender of %s: %s", user.first_name, update.message.text)
update.message.reply_text(
    "<TEXT>",
reply_markup=ReplyKeyboardRemove())

def age(bot, update):
# Get age from user
user = update.message.from_user
logger.info("Age of %s: %s", user.first_name, update.message.text)
update.message.reply_text(
        "<TEXT>"
)
return ConversationHandler.END

def skip_age(bot, update):
# /skip command
user = update.message.from_user
logger.info("User %s did not specify age", user.first_name)
update.message.reply_text(
    "<TEXT>"
)
return ConversationHandler.END

Обработчик команд и обработчик сообщений в основной функции:

 conv_handler = ConversationHandler(
    entry_points=[CommandHandler('chat', chat)],

    states={
        GENDER: [RegexHandler('^(Boy|Girl|Other)$', gender)],

        AGE: [MessageHandler(Filters.text, age),
            CommandHandler('skip', skip_age)]
    },

    fallbacks=[CommandHandler('cancel', cancel)]
)

dispatcher.add_handler(conv_handler)

Журнал бота (Переименованный токен в журнале):

2018-09-30 21:20:33,977 - __main__ = INFO - Gender of Jan: Boy
2018-09-30 21:29:00,826 - telegram.vendor.ptb_urllib3.urllib3.connectionpool = WARNING - Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'ConnectTimeoutError(<telegram.vendor.ptb_urllib3.urllib3.connectionpool.HTTPSConnectionPool object at 0x7fafec6b5ef0>, 'Connect timed out. (connect timeout=5.0)')': /bot<TOKEN>/getUpdates

Ссылка на файл py для всего кода: https://github.com/TryingOutSomething/testing/blob/master/testing.py

Теги:
telegram-bot
python-telegram-bot

1 ответ

1
Лучший ответ

Вам не хватает ваших функций для обработчиков.

На строке 109 вы имеете следующее:

# Help command
help_command = CommandHandler('help', help)
dispatcher.add_handler(help_command)

Это для добавления функции help в качестве обработчика для обработки команд. Вам нужно также добавить свои функции в качестве обработчиков, вы можете просто скопировать вставку этих строк и заменить 'help' на то, что вы пишете своему боту, и help с именем функции, которой вы хотите.

Пример:

# Ask my age command
the_age_command = CommandHandler('age', age)
dispatcher.add_handler(the_age_command)
  • 1
    Спасибо за предложение, оно заставило меня понять, где моя ошибка! Оказывается, я не вернул ВОЗРАСТ после функции пола

Ещё вопросы

Сообщество Overcoder
Наверх
Меню