Проверка сообщения пользователя на число в Telegram - telebot
@bot.message_handler(commands=['realtyvalue'])
def rvalue(message):
bot.send_message(message.chat.id, 'Приступаем к оценке вашей недвижимости...', reply_markup=None)
bot.send_message(message.chat.id, 'Пришлите боту число - площадь квартиры (м²):', reply_markup=None)
square_realty = message.text
while square_realty.isdigit() == False:
bot.send_message(message.chat.id, 'Пришлите боту только число - площадь квартиры (м²):', reply_markup=None)
square_realty = message.text
bot.send_message(message.chat.id, 'Данные приняты! \n площадь квартиры:',square_realty, reply_markup=None)
Мне нужно, чтобы сообщение, хранящееся в переменной square_realty проверялось на то, чтобы быть числом. И если введено не число площади квартиры, то бот просил прислать площадь еще раз.
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
Как вам уже правильно говорили, нужно использовать register_next_step_handler.
Вот небольшой пример:
import telebot
TOKEN = 'TOKEN'
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands=['realtyvalue'])
def rvalue(message):
bot.send_message(message.chat.id, 'Приступаем к оценке вашей недвижимости...', reply_markup=None)
bot.send_message(message.chat.id, 'Пришлите боту число - площадь квартиры (м²):', reply_markup=None)
bot.register_next_step_handler(message, callback=calculation)
@bot.message_handler(func=lambda message: True)
def handle_messages(message):
bot.reply_to(message, "Привет, что бы приступить к оценке вашей недвижимости - /realtyvalue")
def calculation(message):
square_realty = message.text
if square_realty.isdigit():
#bot.clear_step_handler_by_chat_id(message.chat.id) - а так можно удалять step_handler
bot.send_message(message.chat.id, 'Данные приняты! \nПлощадь квартиры: ' + square_realty, reply_markup=None, parse_mode=None)
else:
bot.send_message(message.chat.id, 'Пришлите боту только число - площадь квартиры (м²):', reply_markup=None)
bot.register_next_step_handler(message, callback=calculation)
bot.polling()