@Lassa

Как сделать так, чтобы telegram bot принимал только целочисленные сообщения?

Бот должен спрашивать "Сколько вам лет?" и потом показывать результат, но
как сделать так, чтобы бот принимал только численные сообщения (integer), а если ему ввести текст, тогда пусть начинает всё сначала или выдаёт ошибку.
Использую pyTelegramBotAPI
  • Вопрос задан
  • 94 просмотра
Решения вопроса 2
@STARoD00M
@bot.message_handler(content_types=['text'])
def reg_age(message):
  global age
  age = message.text
  if age == int:
    bot.send_message(message.chat.id, "Хорошо тебе! " + age + "лет")
    bot.register_next_step_handler(message, next_step) # указывай какая функция будет обрабатывать следующее сообщение пользователя
  else:
    bot.send_message (message.chat.id, "Возраст это целое число! ")
    bot.register_next_step_handler(message, reg_age) # Следущее сообщение пользователя считает функция reg_age


Декоратор bot.message_handler для функций из register_next_step_handler не прописывай
Ответ написан
Amoralny
@Amoralny
Python-разработчик
Вот так можно:
bot.message_handler(content_types=['text'])
def reg_age(message):
  age = message.text
  if age.isdigit():
    age = int(age) # свернём в int, тк хвост из левых чисел нам не нужен
    bot.send_message(message.chat.id, f"Хорошо тебе! {age} лет") #берём "f" чтобы все встало само,  без перегона в srt 
    bot.register_next_step_handler(message, next_step) # указывай какая функция будет обрабатывать следующее сообщение пользователя
  else:
    bot.send_message (message.chat.id, "Возраст это число, а не текст! ")
    bot.register_next_step_handler(message, reg_age) # Следущее сообщение пользователя считает функция reg_age


str.isdigit() #проверяет - является ли строка числом

ps. код взять от человека, ответившего выше, я доработал :D
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы