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

Доброго времени суток! Вопрос следующий: имеется бот, который переводит величины. В нашем случае кг в фунты. При выборе команды /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()
  • Вопрос задан
  • 754 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы