автоудаление сообщений, истории
В телеграм есть стандартная функция - автоудаление сообщений чата.
Как настроить в боте в aiogram так же, чтобы в общем история в чате хранилась только одни сутки, например.
Ответы (1 шт):
Автор решения: Turbo Bum
→ Ссылка
Для настройки автоудаления сообщений в чате с помощью бота на aiogram можно использовать следующий подход:
Импортируйте необходимые библиотеки:
from aiogram import Bot, Dispatcher, types from datetime import datetime, timedelta
Создать функцию, которая будет удалять сообщения старше одного дня:
async def delete_old_messages(bot: Bot, chat_id: int): """ Функция для удаления сообщений старше 1 дня в указанном чате. """ one_day_ago = datetime.now() - timedelta(days=1) async for message in bot.get_chat_history(chat_id): if message.date < one_day_ago: try: await bot.delete_message(chat_id, message.message_id) except: pass
Вызывайте эту функцию периодически, например, каждый день:
from aiogram.utils.executor import start_polling async def on_startup(dp: Dispatcher): print('Bot started') chat_id = 'YOUR_CHAT_ID' # Замените на ID вашего чата while True: await delete_old_messages(dp.bot, chat_id) await asyncio.sleep(86400) # Ждем 1 день перед следующим вызовом if __name__ == '__main__': start_polling(on_startup)
Попробуйте такой подход, и не забудьте подставить нужные вам значения. (Всё сработает, если у бота есть права на удаление).