Как сделать так, чтобы телеграмм-бот не спамил после перезапуска, aiogram 3

Я новичок. У меня есть бот для телеграмма, написан он на aiogram 3, python. Проблема состоит в том, что если бот вырубается, а пользователь продолжает отправлять ему сообщения, то при повторном запуске бота он начинает спамить, отвечая на заданные во время неактивности команды. Это можно как-то исправить? Ну, чтобы как только я снова запускаю бота, он "забывал" все те сообщения?


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

Автор решения: Amgarak

Перед запуском цикла бота:

import requests

api_key = 'TOKEN'

def clear_queue(update):
    url = f'https://api.telegram.org/bot{api_key}/getUpdates'
    params = {'offset': update.get('update_id')+1}
    response = requests.get(url, params=params)
    
# Очистка очереди перед стартом бота
url = f'https://api.telegram.org/bot{api_key}/getUpdates'
response = requests.get(url)
updates = response.json().get('result', [])
if updates:
    clear_queue(updates[-1])
→ Ссылка
Автор решения: CausonQ

В Aiogram есть метод deleteWebhook

Вызываете его и всё, накопленные апдейты будут пропущены

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())
→ Ссылка