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()