Реклама - двигатель торговли (с). Тем не менее, иногда она бывает достаточно назойливой и деструктивной. В этой заметке мы за 5-10 минут рассмотрим как бороться с одним из её проявлений на платформе twitch.tv. Речь пойдет о назойливой рекламе сервиса по продвижению канала и накрутке зрителей, ниже будет приведен паттерн рассылки, который узнает любой, кто с ней когда-либо сталкивался на своем или чужом канале (название сервиса и владельца канала изменено).
Паттерн:
Привет, @UserName! Вкладываешь душу в стрим а людей нет? Не можешь пробиться в топ? Сервис SpamService .pro предлагает тебе свою помощь. Всего за 4р ты сможешь получить тариф и привлечь людей. А 2 тарифа для теста ты получишь за регистрацию и отзыв. Отключить рекламу? Напиши нам! (•̀ᴗ•́)و
Итак, этот (•̀ᴗ•́)و мелкий разбойник предлагает нам свои услуги, всего-то за 4 рубля. И будет продолжать предлагать периодически с новых аккаунтов, так что просто блокировка аккаунта на канале вам не поможет. Платформа twitch.tv "из коробки", предлагает нам использовать чёрный и белый списки слов для вашего канала, найти его можно в настройках модерации вашего канала, но это решение также имеет недостаток. Первый из них, и пожалуй самый главный, такой способ не может приспособиться к изменению паттерна. Т.е. на каждое новое изменение паттерна, вам придётся добавлять новое слово в чёрный или белый список, так же к минусам стоит отнести то, что обновление правил блокировки в соответствии с чёрным списком проходит не моментально, а только по прошествии какого-то времени. Существует вариант "старой и доброй" ручной модерации. Но все прекрасно знают, что человек механизм ненадёжный. Всё это подводит нас к идеи автоматизации процесса удаления таких сообщений из чата вашего канала, или же занесение пользователей из под чьих аккаунтов ведётся такая рассылка в список получивших бан на канале, приступим к реализации наколенного блюстителя спокойствия .
Реализация ниже сделана с помощью языка программирования Rust и некоторого количества дополнительных библиотек полученных из репозитория https://crates.io для того чтобы уложить в 5-10 минут. Вы можете выбрать любой другой способ реализации.
Создаем Cargo проект:
cargo new --bin spam_blocker
Переходим в директорию spam_blocker
cd spam_blocker
Открываем любым текстовым редактором файл Cargo.toml и ниже секции [dependencies] добавляем зависимости которые будут использованы в проекте. В нашем случае мы добавим twitchchat, lazy_static, regex, dotenv.
Далее приведен минимальный работающий код без каких-либо попыток сделать его хорошим, обработать возможные ошибки или что-то подобное в этом роде, так как мы всё ещё хотим успеть за 5-10 минут избавиться от назойливого спама. По причине безнадёжно убогого редактора yandex zen код по ссылке на snippet из gitlab (так же к сниппету приложен атачем бинарный собранный файл для windows).
После того как вы скомпилируете предложенный исходник останется лишь определить две переменные окружения TWITCH_NICKNAME и OAUTH или задать их в файле .env так как у нас подключен dotenv он найдет их в этом файле.
О том как получить токен авторизации от twitch.tv или сторонним способом смотрите в этой заметке.