Здравствуйте Юзеры Habr. Я создаю бота на Aiogram и у меня встал такой вопрос: Как мне лучше всего сделать фильтрацию сквернословия? Типа кто-то пишет какой-то мат в чат и в независимости от регистра введенного слова чтобы боте его оперативно удалял. Также есть еще такой вопрос, как добавить так скажем, всю базу матюков без лишней запары. Чтобы не вводить каждый мат в команду исключения, а то таким макаром запипикаешься вводить все эти маты.
Вот та небольшая часть кода которую я уже успел набросать:
import config
import logging
import filters
from aiogram import Bot, Dispatcher, executor, types
from filters import IsAdminFilter
logging.basicConfig(level=logging.INFO)
bot = Bot(token=config.TOKEN)
dp = Dispatcher(bot)
dp.filters_factory.bind(IsAdminFilter)
@dp.message_handler(is_admin=True, commands=["ban"], commands_prefix="!/")
async def cmd_ban(message: types.Message):
if not message.reply_to_message:
await message.reply("Эта команда должна быть ответом на сообщение!")
return
await message.bot.delete_message(config.GROUP_ID, message.message_id)
await message.bot.ban_chat_member(chat_id=config.GROUP_ID, user_id=message.reply_to_message.from_user.id)
await message.bot.unban_chat_member(chat_id=config.GROUP_ID, user_id=message.reply_to_message.from_user.id)
await message.reply_to_message.reply("Пользователь забанен!")
@dp.message_handler(is_admin=True, commands=["unban"], commands_prefix="!/")
async def cmd_ban(message: types.Message):
if not message.reply_to_message:
await message.reply("Эта команда должна быть ответом на сообщение!")
return
await message.bot.delete_message(config.GROUP_ID, message.message_id)
await message.bot.unban_chat_member(chat_id=config.GROUP_ID, user_id=message.reply_to_message.from_user.id)
await message.reply_to_message.reply("Пользователь разбанен!")
@dp.message_handler(content_types=["new_chat_members"])
async def on_user_joined(message: types.Message):
await message.delete()
@dp.message_handler()
async def filter_messages(message: types.Message):
if "Плохое слово" in message.text:
await message.delete()
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=True)