Telebot Python. Как заставить бота игнорировать всё кроме чисел?

Пишу бота, и не могу понять как сделать так, что бы бот отвечал что то типо: "Это не похоже на числа", когда пользователь присылает ему всё кроме чисел, и продолжал ждать числа


Ответы (2 шт):

Автор решения: Kers

Например привести данные к числу а если это вызовет ошибку значит не число:

l = ["asd", 1]

for i in l:
    try:
        print(f"Это число {int(i)}")
    except ValueError as e:
        print(f"{i} это не число")

Единственно стоит учитывать что за числа вы используете, int(2,5) #2 округлит число до целого, float(2) #2.0 добавит точку.

→ Ссылка
Автор решения: Pavlo G

В python есть метод - isdigit()

''.isdigit()  # False
'  '.isdigit()  # False
'!@#'.isdigit()  # False
'abc'.isdigit()  # False
'123'.isdigit()  # True
'abc123'.isdigit()  # False

Тогда бот может после получения сообщения, проверять его этим методом. Например:

import telebot

bot = telebot.TeleBot(your_token)

@bot.message_handler(content_types=["text"])
def repeat_all_messages(message):
    isdigit = message.text.isdigit()
    if isdigit:
        bot.send_message(message.chat.id, f'{message.text} - число!')
    else:
        bot.send_message(message.chat.id, f'{message.text} - НЕ число!')
    
if __name__ == '__main__':
     bot.infinity_polling()
→ Ссылка