Фильтр для бота Telegram

Допустим есть бот для модерации чата и фильтр ссылок и нежелательных слов благодаря которому удаляются сообщения :

@dp.message_handler(content_types=['text'])
async def delete_links(message: types.Message):
    admins_list = [admin.user.id for admin in await bot.get_chat_administrators(chat_id=message.chat.id)]
    if message.from_user.id not in admins_list:
            
          if 'бля' in message.text:
            await bot.delete_message(message.chat.id, message.message_id)

Однако в таком случае бот удаляет и подобные сообщения : "Нельзя оскорблять участников" т.к. видит ключевое слово. Как можно исправить данную проблему, чтобы он не удалял сообщения подобного типа?


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

Автор решения: ForeverOnline
@dp.message_handler(content_types=['text'])
async def delete_links(message: types.Message):
    admins_list = [admin.user.id for admin in await bot.get_chat_administrators(chat_id=message.chat.id)]
    if message.from_user.id not in admins_list:
           #С помощью split() мы разбиваем фразу на несколько строк отделяющиеся пробелам, тем самым выделяя(вырывая, проверяя) конкретное слово из контекста, а не из слова фразу. 
           if 'бля' in message.text.split(' '):
            await bot.delete_message(message.chat.id, message.message_id)

→ Ссылка