В телеграмме существует куча ботов которые помогают администрировать чаты, удаляя спамеров, ведя статистику, и тд.
Далее мы напишем бота для удаления матов из чата, и ещё несколько фишек.
Начнём с выбора библиотеки, на выбор у нас две библиотеки:
- aiogram
- pyTelegramBotAPI
У меня были посты со вторым вариантом, и из разнообразия я поработаю с airogram.
Сразу оставлю документацию: https://docs.aiogram.dev/en/latest/
Установим! Люди которые работали с python уже поняли о чём идёт речь, но я кратко объясню, открываем командную строку, и вводим
pip install aiogram
Основа бота, которую мы возьмём за шаблон.
9 строка гласит токен бота, но где его взять? У отца ботов телеграмм!
Быстро создадим бота написав ему /newbot:
После манипуляций выше вы получите токен, вставьте его в строку вместо <token>.
Теперь запустим наш файл с токеном и кодом бота, если никаких ошибок не выдало, то напишем нашему боту /start, он должен ответить Здравствуйте!, и ничего более, но так скучно, он ничего не делает, и отвечает только на команду старт. Давайте чуть-чуть побалуемся, и подробнее изучим код:
Вот простейшая повторюшка, всё что не команда которая была в обработчике ранее, будет повторятся. content_types в данном случае, определяет тип сообщения, их несколько:
text, audio, document, photo, sticker, video, video_note, voice, location, contact, new_chat_members, left_chat_member, new_chat_title, new_chat_photo, delete_chat_photo, group_chat_created, supergroup_chat_created, channel_chat_created, migrate_to_chat_id, migrate_from_chat_id, pinned_message.
Можно использовать два content_types:
два content_types:
@dp.message_handler(content_types=['sticker', 'photo'])
две команды:
@dp.message_handler(commands=['start', 'help'])
Примеры выше будет обрабатывать стикеры и фотографии, /start и /help отравленные боту.
Давайте начнём подготавливать бота к работе в чате, для начала пусть встречает пользователей!
Теперь для теста понадобится чат, теперь нужно выйти, и войти в чат, увидим:
Из кода может возникнуть вопрос, а зачем reply, а не как раньше send_message? Это для того чтобы пользователя уведомляло о сообщение, так как обычно приветствие должно содержать правила, а теперь сделаем небольшой фильтр от матов, поставим задачу:
- Бот должен удалять сообщение с матами
- Присылать сообщение, но без мата
Выглядеть будет как-то так:
Вместо мата три точки, а того сообщения как небывало! Основа у нас есть, и главная сложность состоит в том, что нам нужен большой словарь матов... Я примерно составил его, но чтобы собрать все маты, пригодится как минимум их всех знать...
https://github.com/htmlcssphpjs/image/blob/main/mats.txt
Теперь нужно сделать цикл перебирающий слова сообщения, и текстового файла с матами:
Запустим, напишем мат в чат, эм... ничего не произошло? Что-то с кодом не то? Нет, телеграмм сделал так, чтобы бот без прав не мог ничего делать, кроме как отправлять сообщения, поэтому зайдём в настройки чата, и выдадим ему права:
Вот и всё, код может и не идеален, но со своей работой справляется, если вы знаете как улучшить напишите, это лишь мини туториал, таких ботов не мало, и сейчас одного из таких я пишу: @myCensorBot
Прошу подписаться на мой телеграмм канал, это даст несколько плюсов, вы сможете пообщаться со мной, внести свой вклад в посты, а также первым узнать о проектах и постах!