Задать вопрос
@IlyaPook

Telebot отправляет на запрос несколько сообщений, как исправить?

Написал бота на telebot, но есть проблема, то что в случае ошибки пользователя (нажатие на кнопку 2 раза, либо введет команду /start >=2 раз), бот отправляет несколько сообщений, в зависимости, от количества нажатых кнопок. Видел кучу ответов на такой вопрос, то что рекомендуют использовать bot.polling(skip_pending=True) также вставлял и в bot = telebot.TeleBot('token', skip_pending=True), также писал иbot.infinity_polling() и bot.infinity_polling(skip_pending=True), ну и bot.delete_webhook() - не помогло, на форуме перерыл, ничего не нашел другого.

Как можно решить данную проблему? Для лучшего понимания, вот скрин:
u8a6Z.png

Ну и собственно, пример кода:

import telebot

bot = telebot.TeleBot(token)


@bot.message_handler(commands=['start', 'help'])
def main(message):
    button = types.ReplyKeyboardMarkup(resize_keyboard=True)
    button.add(types.KeyboardButton('Привет'))
    msg = bot.send_message(message.chat.id, 'Привет', reply_markup=button)
    bot.register_next_step_handler(msg, next)

@bot.message_handler(func=lambda m: True)
def next(message):
    if message.text == 'Привет':
        hi(message)

@bot.message_handler(func=lambda m: True)
def hi(message):
    bot.send_message(message.chat.id, 'Да, привет, как дела?')

bot.polling(skip_pending=True)
  • Вопрос задан
  • 1264 просмотра
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 3
@nCUXJI9JI9
С аккаунта телеграм надо заново запустить бота (/start)
Ответ написан
@puzaka
А зачем собственно нужно две функции? В чём проблема написать так:
@bot.message_handler(func=lambda m: True)
def next(message):
    if message.text == 'Привет':
        bot.send_message(message.chat.id, 'Да, привет, как дела?')
Ответ написан
Комментировать
@Srrok
Попробуй сделать return после вызова функции hi. Мне помогало
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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