Бот на базе Aiogram спамит после включения

Разрабатываю бота на базе Aiogram в Python. Дело в том, что если после выключения бота пользователи продолжают писать что-то в беседу, то при его последующем включении он начинает отвечать на сообщения, которые были отправлены во время его неактивности. Получается, что он начинает спамить в беседе. Есть ли какой-то код чтобы отключить это? Чтобы он пропускал все те сообщения, которые были написаны во время его неактивности и просто не отвечал на них?


Ответы (2 шт):

Автор решения: Рустам Рысаев

Странно что он реагирует на сообщения пока был в офлайне. У меня всегда игнорирует запросы, которые были отправлены пока он был в оффлайне, но можно попробовать метки когда был отправлен запрос. вроде:

from datetime import datetime

# Переменная для хранения времени запуска бота
bot_start_time = datetime.now()

@dp.message_handler()
async def handle_message(message: types.Message):
    # Получаем время отправки сообщения
    message_time = message.date

    # Проверяем, было ли сообщение отправлено до запуска бота
    if message_time < bot_start_time:
        print("Сообщение игнорируется, оно старое.")
        return  # Не реагируем на старые сообщения

    # Обработка сообщений, которые отправлены после перезапуска бота
    await message.answer("Ваше сообщение принято!")
→ Ссылка
Автор решения: CausonQ

Есть метод, который сбросит все ожидающие апдейты:

import asyncio
from aiogram import Bot, Dispatcher


async def main():
    bot = Bot(token="TOKEN")
    dp = Dispatcher()


    await bot.delete_webhook(drop_pending_updates=True)
    await dp.start_polling(bot)


if __name__ == "__main__":
    asyncio.run(main())

deleteWebhook

→ Ссылка