Задача
Есть желание ввести цензуру в Telegram-чате с помощью бота? Отлично! Ведь бот — компромисс и замечательный помощник в управлении чатом. Администрировать чаты, сдерживать "неспортивное" поведение, банить и ограничивать права участников Telegram -боты могут вполне самостоятельно и успешно.
Подготовка
Оставляем ссылки на телеграм-чат для всех желающих поматериться и ссылку на исходники. Так появляется первая группа людей, которые получают фан от чата.
Как установить бота?
Теперь добавляем бота в группу и делаем его администратором:
https://t.me/GDGCensorChat.
https://t.me/GDGCensorChat.
При этом важно:
- Группа должна быть открытой
- Бот должен быть администратором группы.
Программируем основу бота
Копируем базовый функционал бота из старого репозитория.Возможные проблемы
Проблема 1
Не приходят сообщения из группы.
Решение
https://github.com/yagop/node-telegram-bot-api/issues/174#issuecomment-244632667Настраиваем редактирование сообщений. Доступен метод, представленный 19 мая 2017
года: deleteMessage.
Проблема 2
При копировании кода бота, копируются также и старые версии библиотеки: https://github.com/yagop/node-telegram-bot-api.
Решение
Стандартное обновление. После обновления библиотеки, бот будет автоматически удалять сообщения с матерными словами.
Таким образом, основа бота готова.
Улучшаем обработку сообщений
Два часа провел в поиске сервиса API для удаления бранных слов.
Бесплатного сервиса, к сожалению, не нашел ☹️.
Что делает бот
- Обрабатывает каждое сообщение.
- Удаляет сообщение при обнаружении мата
- Формирует ответ пользователю.
Формирование ответа
Записываем и употребляем БНФ конструкции:
<ответ> ::= <слова до> <имя пользователя> <слова после> <смайл>: \n <цензурный текст>
<слова до> ::=
А |
Ой, |
Хм... |
Ого! |
Ого! |
Эй, |
Ой-вэй, |
Эх, |
Капец!<имя пользователя>::=
<имя> <фамилия> |
<никнейм>
<слова после> ::=
негодует |
повысил градус беседы |
высказался |
сказанул |
ропчет |
щебечет |
гаркнул |
не подумал, что сказал |
додумался |
прозрел
повысил градус беседы |
высказался |
сказанул |
ропчет |
щебечет |
гаркнул |
не подумал, что сказал |
додумался |
прозрел
<смайл> ::=
🙉 |
🙊 |
🙈 |
😱 |
🐤 |
🦄 |
🌸 |
💔 |
Обучение бота
Для обучения бота существуют две команды:
/t - проверка мата в словаре
/s - добавления нецензурного слова в словарь.
Для тестирования бота есть группа:
https://t.me/GDGCensorChat
https://t.me/GDGCensorChat
Можно напрямую написать боту:
Размещение бота на сервере Heroku
- Создаем новый пайплайн с названием приложения: gdg-censor-bot
- Подключаем пайплайн к репозиторию VadimCpp/gdg-censor-bot
- Добавляем новое приложение в раздел production
- Заходим в BotFather и указываем домен приложения для нашего бота: https://gdg-censor-bot.herokuapp.com/
- При запуске приложения на продакте, webHook устанавливается автоматически.
Итого
Телеграм-боты - это клево! 👍
Телеграм боты - это сила! 💪👊
Стоит ли их использовать для своих задач? Однозначно! И даже не сомневайтесь!
Стоит ли их использовать для своих задач? Однозначно! И даже не сомневайтесь!
Первая версия бота, сделанного на хакатоне находится в открытом доступе:
https://github.com/VadimCpp/gdg-censor-bot
Хотите помочь?
Просто присоединяйтесь к группе:
https://t.me/GDGCensorChat
Тут можно свободно тестировать все мыслимые и немыслимые бранные слова.
https://t.me/GDGCensorChat
Тут можно свободно тестировать все мыслимые и немыслимые бранные слова.
Обратная связь:
ВК: https://vk.com/vadimcpp
Телеграм: @vadimcpp
ВК: https://vk.com/vadimcpp
Телеграм: @vadimcpp
Продолжение
О том, какие вопросы надо решить создателям бота, можно почитать в части 2.