Бот на базе 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("Ваше сообщение принято!")
Есть метод, который сбросит все ожидающие апдейты:
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())