Как сделать чтобы телеграмм бот удалял сообщения с ссылками Aiogram

Пытаюсь сделать так чтобы бот удалял плохие сообщения, но не получается сделать нормально.

Вот код:

@dp.message_handler()
async def filter_message(message: types.Message):
    if "https" in message.text:
        await message.delete()

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

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

Можно вот так. Эта мидлварь будет удалять все ссылки

from aiogram.dispatcher.handler import CancelHandler
from aiogram.dispatcher.middlewares import BaseMiddleware
from aiogram.types import MessageEntityType


class UrlMiddleWare(BaseMiddleware):
    async def on_pre_process_message(self, message: types.Message, data: dict):
        if msg_entities := (message.entities or message.caption_entities):
            for entitie in msg_entities:
                if entitie.type in [MessageEntityType.URL, MessageEntityType.TEXT_LINK]:
                    await message.delete()
                    raise CancelHandler()

# dp - экземпляр диспатчера
dp.setup_middleware(UrlMiddleWare())

Если нужно чтобы он удалял еще и маты то лучше добавить еще одну мидлварь, которая будет проверять текст сообщения на наличие мата.

→ Ссылка