Как сделать чтобы телеграмм бот удалял сообщения с ссылками 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())
Если нужно чтобы он удалял еще и маты то лучше добавить еще одну мидлварь, которая будет проверять текст сообщения на наличие мата.