Приветствую. Пишу бота для модерации канала. Он должен удалять комментарии с матным содержимым, для этого я написал код:
@channel_router.message()
async def send_rules(message: Message, bot: Bot):
triggers = set(await read_profanity())
for word in message.text.lower().strip().split():
parsed_word = morph.parse(word)[0]
normal_form = parsed_word.normal_form
for trigger in triggers:
if trigger in normal_form:
await message.delete()
await message.delete()
await bot.send_message(chat_id=bot_config.CHAT_ID,
text=f'Пользователь {message.from_user.first_name} '
f'написал(а):\n<blockquote>{message.text}</blockquote>')
Он лишь части решает проблему: если писать непосредственно в комментариях под постами, то маты никуда не деваются, но если писать их в привязанном чате, то они удаляются, как и положено.
Могут возникнуть вопросы по поводу этого фрагмента:
await message.delete()
await bot.send_message(chat_id=bot_config.CHAT_ID,
text=f'Пользователь {message.from_user.first_name} '
f'написал(а):\n<blockquote>{message.text}</blockquote>')
Это на случай, если мата нет, бот тогда должен просто удалить комментарий пользователя под постом и переслать его в те же комментарии под постом, но уже в виде цитаты.