Цепочка событий, которая меня привела к написанию бота такова:
- Я делал сайт для жены и там использовалось зеркало для t.me c рекламой
- Я искал opensource решения, чтобы поднять на поддомене зеркало без рекламы
- Решения нашел, но все не подходили под цели, эта вещь должна была быть очень простой и подниматься в докере
- Я написал свой редирект и выложил его в opensource
- Листая твиттер, вк и сайты комитета очень часто видел прямые ссылки на каналы t.me и приходилось либо искать по никнейму, либо делать лишние действия с переходом на свое зеркало
- Решил написать бота
Если интересна статья про само зеркало, могу написать. Исходный код тут:
Код бота я тоже выкладываю в открытый доступ для ознакомления. Ничего сложного или особенного в нем нет. Код писался под развертывание в Docker Swarm, но спокойно может быть запущен и без докера.
Работает очень просто, я подписываю 3 ссылки на каждый сайт Комитета как вебхук на новые комментарии notion.so/dd8bf6f5c1fd430286530644d4c362df, каждый комментарий обрабатываю на наличие ссылки на t.me, заменяю на зеркало и шлю реплай notion.so/93726b07e3034231af3d0d031d74d70d
Работает все через встроенный в NodeJS http.createServer без "лишних библиотек" (конечно можно заменить axios на встроенный fetch и написать свой обработчик POST тела), но и в таком виде докер образ весит смешные 28МБ
Управление Docker Swarm у меня происходит через очень удобный Swarmpit. Вот готовый ямл, в админке само собой просто заполняются поля. Режим репликации очень удобный, но в случае сайтов комитета достаточно было бы и 1й реплики на слабом дроплете из DO, комментарии падают не часто.
Сеть global_nginx подключена к глобальному сервису nginx, который слушает 80 и 443 порт и распределяет трафик между всеми приложениями. Вот конфиг конкретно этого приложения
С чем пришлось столкнуться. Само собой дебажить вебхуки занятие непростое, либо нужно делать себе прокси на локальную машину, либо выкладывать в прод и просто смотреть, что приходит. Я выбрал второй путь и никаких особых проблем не испытал с АПИ комитета.
Проблема была в получении API ключа, т.к. видимо новые аккаунты его получить не могут. Также аккаунт на VC.ru уже 2 раза улетел в бан за спам. И тут я уже не знаю что делать, т.к. бот вроде как полезный, но он не разбирает, на чей комментарий отвечает. Собственно улетел в бан он явно за ответ на комментарий спамера. Следить за ботом и писать в поддержку я не вижу особо смысла, если сайт считает, что им боты не нужны, то ок. Тогда не очень понятно зачем API =)
Сейчас скучные дни, поэтому если есть идеи, можно написать еще каких-нибудь ботов. У меня была идеа сделать реддитовского !remindme бота, но у комитета нет API для личных сообщений
А теперь статистика. На 13:00 МСК когда я писал статью:
15
61%
P.S. Бота заблокировали и на сайте Tjournal. Думаю на DTF тоже скоро забанят. Печально
О, приколный бот. Хоть и просто, но оч полезно. Пользуюсь Touch VPN для таких случаев как плагином в браузере, за 5 секунд включил, по ссылке перешел и выключил.
У API есть ограничение вроде, мол можно слать не чаще 3-ех запросов в секунду. Может пару раз это было нарушено, и по этому в бан улетел?
Или то что шлешь реплаи абсолютно на все комменты с содержанием ссылки на телегу. Можно просто в комменте дергать бота, и он бы обрабатывал только те ссылки, где бот упомянается
Да, я думал об именно упоминаниях, но в таком случае пользователи должны знать о наличии такого бота. Ссылки на t.me не так часто постят. На всех сайтах комитета максимум раза 3 в день. Думаю бан просто от публикации ссылок прилетел.
Причем первый бан был вообще за публикацию статьи в личном блоге бота с описанием, что это за бот.
Если побанят на других сайтах, то наверное перепишу его на упоминания, если они вообще тут есть
Собственно демонстрация его работы.
t.me/durov
Комментарий удален модератором
попробуйте https://ngrok.com/
и дебажить вебхуки станет очень просто
Ну также они и пастбин предлагают использовать. Проблеме не в самих данных, документация очень хорошая, а в том, в каком виде они приходят и как парсить тело запроса. Я старался не использовать нагромождение пакетов, чтобы это поменьше весило. Поэтому просто вылил приемщик, который логировал все, что приходит и дописал его в паре следующих коммитов
P.S. Прости, не перешел по ссылки, думал это просто приемник запросов. Ну да, я такой вариант имел ввиду, но тот что я юзал раньше был посложнее. Спасибо, добавил в закладки
Так это ты тут лазил что у нас сбои были?)
какие сбои?
Чувак считает очень остроумным, если он будет говорить так, как будто работает в Комитете.
Весна - пора обострений различных болезней (в том числе и психических)
Может тоже на самоизоляции сидит. Я хоть и работаю в основном на удаленке, но 2 недели сидеть дома ужасно тяжело )
Комментарий удален модератором