From 4ff14861dcd1991a0a1aaa38a30f2d52e60ab2f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Fri, 1 Apr 2022 15:51:55 +0300 Subject: [PATCH] =?UTF-8?q?Fix.=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D1=81=D1=82=D0=B0=D1=80=D1=82=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 37 ++++++++++++++++++++----------------- models.py | 4 ++-- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/main.py b/main.py index d54373b..ce251dd 100644 --- a/main.py +++ b/main.py @@ -156,24 +156,27 @@ async def wlc(message: types.Message) -> None: # https://stackoverflow.com/questions/67637631/create-a-background-process-using-aiogram async def messages_cleanup() -> None: - # выполняется только при запуске бота! Может быть плохо - msg_list = ( - services.session.query(Messages_to_delete).order_by(Messages_to_delete.id).all() - ) + """Зачистка пропущенных сообщений. При запуске бота проверяет, есть ли не удаленные сообщения требующие удаления, удаляет их.""" while True: - # вот тут бы проверить, что вообще есть сообещния - for m in msg_list: - if m.deletion_needed: - try: - await bot.delete_message( - chat_id=settings.CHAT_ID, message_id=m.message_id - ) - services.session.delete(m) - services.session.commit() - except MessageToDeleteNotFound: - print("Сообщение не найдено!") - services.session.delete(m) - services.session.commit() + msg_list = ( + services.session.query(Messages_to_delete) + .order_by(Messages_to_delete.id) + .all() + ) + if msg_list: + for m in msg_list: + print(m.deletion_needed()) + if m.deletion_needed(): + try: + await bot.delete_message( + chat_id=settings.CHAT_ID, message_id=m.message_id + ) + services.session.delete(m) + services.session.commit() + except MessageToDeleteNotFound: + print("Сообщение не найдено!") + services.session.delete(m) + services.session.commit() await asyncio.sleep(600) diff --git a/models.py b/models.py index 6195cd0..9472fe0 100644 --- a/models.py +++ b/models.py @@ -3,7 +3,6 @@ from sqlalchemy import Column, Integer, String, DateTime, UniqueConstraint from sqlalchemy.orm import declarative_base from datetime import datetime -# from main import Base Base = declarative_base() @@ -61,7 +60,8 @@ class Messages_to_delete(Base): Мы могли пропустить удаление из-за перезапуска. """ - if datetime.now() > self.deletion_date: + time_now = datetime.now() + if time_now > self.deletion_date: return True return False