PyTGbot TypeError: can't multiply sequence by non-int of type 'float'

Рейтинг: 0Ответов: 1Опубликовано: 13.07.2023

Кодю бота для расчета комиссии в тг, столкнулся с проблемой:

sum = eval(message.text * 0.2)
           ~~~~~~~~~~~~~^~~~~
TypeError: can't multiply sequence by non-int of type 'float'
"

Как решить, помогите пж. Вот отрывок с TypeError'ом:

@bot.message_handler(content_types=['text'])
def b_but(message):
    if message.text <= '300':
        sum = eval(message.text * 0.2)
        bot.send_message(f'Коммисия сервиса:{sum}₽')

Ответы

▲ 1Принят
  1. Не используйте для имён переменных зарезервированные имена такие как sum(). Лучше используйте amount.
    1. Не используйте eval() для безопасности
    2. Вы перемножаете строку на float(дробное число) что недопустимо и вызывает ошибку
  2. В message.text <= '300' та же ошибка, вы пытаетесь сравнить 2 строки будто это числа.

Вот исправленный код который не должен будет выдавать ошибки:

@bot.message_handler(content_types=['text'])
def b_but(message):
    if int(message.text) <= 300:
        amount = int(message.text) * 0.2
        bot.send_message(f'Коммисия сервиса:{amount}₽')