Browse Source

Fix. Исправил удаление сообщений при старте.

master
Дмитрий 3 years ago
parent
commit
4ff14861dc
  1. 37
      main.py
  2. 4
      models.py

37
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)

4
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

Loading…
Cancel
Save