|
|
|
@ -4,7 +4,7 @@ from aiogram import Bot, Dispatcher, executor, types
|
|
|
|
|
from aiogram.utils.exceptions import MessageToDeleteNotFound |
|
|
|
|
import asyncio |
|
|
|
|
from datetime import timedelta |
|
|
|
|
from models import Allowed_user, Messages_to_delete, Base |
|
|
|
|
from models import Messages_to_delete, Base |
|
|
|
|
from aiogram.utils.markdown import escape_md |
|
|
|
|
import settings |
|
|
|
|
import services |
|
|
|
@ -154,33 +154,38 @@ async def wlc(message: types.Message) -> None:
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dp.message_handler(commands=["info"]) |
|
|
|
|
@services.only_admins |
|
|
|
|
async def get_info(message: types.Message) -> None: |
|
|
|
|
"""Вовзращает версию бота.""" |
|
|
|
|
msg = f"Версия бота: *{settings.VERSION}*" |
|
|
|
|
await message.reply( |
|
|
|
|
msg, |
|
|
|
|
reply=False, |
|
|
|
|
parse_mode="Markdown", |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dp.message_handler(commands=["test"]) |
|
|
|
|
@services.only_admins |
|
|
|
|
async def test_admins(message: types.Message): |
|
|
|
|
"""Справка по командам.""" |
|
|
|
|
await message.reply( |
|
|
|
|
"Справка для админов", |
|
|
|
|
reply=False, |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# https://stackoverflow.com/questions/67637631/create-a-background-process-using-aiogram |
|
|
|
|
async def messages_cleanup() -> None: |
|
|
|
|
"""Зачистка пропущенных сообщений. При запуске бота проверяет, есть ли не удаленные сообщения требующие удаления, удаляет их.""" |
|
|
|
|
while True: |
|
|
|
|
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 services.delete_old_messages(bot) |
|
|
|
|
await asyncio.sleep(600) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def on_startup(dispatcher: Dispatcher) -> None: |
|
|
|
|
"""Задачи для запуска при старте бота.""" |
|
|
|
|
asyncio.create_task(messages_cleanup()) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|