Для создания фильтра для Telegram-бота с использованием библиотеки `aiogram`, вы уже на правильном пути с вашей функцией `message_censore`. Давайте разберем и улучшим код, чтобы убедиться, что он работает корректно и эффективно.
Вот пример доработанной функции для проверки сообщений на наличие запрещенных слов из файла `sensore.txt`:
```python
from aiogram import Router
from aiogram.types import Message
from aiogram.utils.exceptions import MessageToDeleteNotFound
router = Router()
@router.message()
async def message_censore(msg: Message):
user_id = msg.from_user.id
user_name = msg.from_user.first_name
# Чтение запрещенных слов из файла
with open('sensore.txt', 'r', encoding='utf-8') as f:
censored_words = {line.strip() for line in f if line.strip()} # Используем множество для быстрого поиска
# Проверка на наличие запрещенных слов
if any(cen_word in msg.text for cen_word in censored_words):
try:
await msg.delete() # Удаляем сообщение
except MessageToDeleteNotFound:
pass # Сообщение уже удалено, ничего не делаем
await msg.answer(
"Вы используете запрещенные слова! \n\n"
"Если вы считаете, что это ошибка, - обратитесь к Администратору группы. \n"
"С уважением, Бот-Модератор канала"
)
```
### Объяснение изменений:
1. **Использование множества**: Вместо списка для хранения запрещенных слов лучше использовать множество (`set`), так как это позволяет производить поиск быстрее, особенно если список слов большой.
2. **Фильтрация пустых строк**: Мы добавили условие `if line.strip()` при чтении слов, чтобы избежать добавления пустых строк в множество.
3. **Обработка исключений**: Бот может попытаться удалить сообщение, которое уже было удалено, что приведет к возникновению исключения `MessageToDeleteNotFound`. Мы обрабатываем это исключение, чтобы бот не завершался с ошибкой.
4. **Кодировка при открытии файла**: Добавили параметр `encoding='utf-8'`, чтобы избежать проблем с кодировкой, особенно если в файле могут быть символы, отличные от ASCII.
Теперь ваш бот будет работать более надежно и эффективно с фильтрацией сообщений в Telegram. Не забудьте добавить обработчик маршрутизации в вашем главном файле для работы с ботом!