Бот бесконечно отправляет сообщения. Как исправить?

Доброго времени суток! Вопрос следующий: имеется бот, который переводит величины. В нашем случае кг в фунты. При выборе команды /weight появляется меню, в котором мы выбираем нужный пункт. Далее вводим значение и обрабатываем. Если после этого телефон залокировать, то бот начинает "спамить" однотипными сообщениями. Думал все дело в ВПН, но перенес бота на Хероку и та же фигня. Кто подскажет в чем может быть причина?

import telebot
from telebot import types


TOKEN = '777'

bot = telebot.TeleBot(TOKEN)

#Weight
weight = types.InlineKeyboardMarkup()
kgtolbs = types.InlineKeyboardButton(text='КГ->ФУНТ', callback_data='kgtolbs')
backtomenu = types.InlineKeyboardButton(text='Назад', callback_data='backtomenu')
weight.add(kgtolbs)
weight.add(backtomenu)

backw = types.InlineKeyboardMarkup()
backw.add(types.InlineKeyboardButton(text='Назад', callback_data='backw'))

def kgtolbs(msg):
    try:
        chat_id = msg.chat.id
        num = msg.text
        if num.isdigit():
            bot.send_message(chat_id, num + ' кг = ' + '{:.5}'.format(float(num) * 2.2046226) + ' фунта', parse_mode='markdown', reply_markup=backw)
        else:
            bot.send_message(chat_id, "*Вы ввели что-то не то:( \n Попробуйте еще раз, у Вас получится*", parse_mode='markdown', reply_markup=weight)
    except Exception as e:
        bot.send_message(chat_id, 'Ops')


#Welcome message
@bot.message_handler(commands=['start'])
def send_welcome(msg):
    text = '*Здравствуй, ' + msg.from_user.first_name + '*\nЯ первый бот, который переводит различные величины прямо в Телеграме!\nДля того, чтобы видеть весь список используйте команду /help\n*По всем вопросам обращайтесь к* @ork821'
    bot.send_message(msg.chat.id, text, parse_mode='Markdown')


#Send list of commands
@bot.message_handler(commands=['help'])
def list_commands(msg):
    bot.send_message(msg.chat.id, "*Список всех команд:*\n------------------------\n_Перевод массы⚖:_ /weight\n_Перевод длин:_ /length\n_Перевод скорости:_ /speed\n_Перевод температуры:_ /tepm\n_Перевод времени:_ /time\n_Перевод валют:_ /money\n\n\n_Помните, что выражение E+04 = 10 в 4 степени = 10000_", parse_mode='markdown')


#Weight keyboard
@bot.message_handler(commands=['weight'])
def list_commands_weight(msg):
    bot.send_message(msg.chat.id, "*Выберите нужный пункт из списка:*", reply_markup=weight, parse_mode='Markdown')


#Analysis message
@bot.callback_query_handler(func=lambda c: True)
def mess(c):

    if (c.data == "backtomenu"):
        list_commands(c.message)
        bot.clear_step_handler_by_chat_id(c.message.chat.id)


    elif (c.data == "backw"):
        list_commands_weight(c.message)
        bot.clear_step_handler_by_chat_id(c.message.chat.id)

    #Weight
    elif (c.data == "kgtolbs"):
        text = bot.send_message(c.message.chat.id, "*Введите ваше число*", parse_mode='markdown')
        bot.register_next_step_handler(text, kgtolbs)
    else: pass

bot.polling()
  • Вопрос задан
  • 226 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 140 000 до 180 000 руб.
Константа Москва
от 140 000 до 220 000 руб.
IT ATLAS Казань
от 120 000 до 150 000 руб.