Фильтр для бота 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)