7.1 KiB
Aleesa-Telegram-bot - Болтливый бот для Telegram
Дисклеймер
Эта версия бота за номером 3 (с мелочью) стабильная. Сие означает, что дальнейшего развития функций в этой версии не предполагается. Конечно, возможны исключения, но основной план - переключиться на 4-ю версию, куда планируется перенести большинство функций 3-й версии.
Если у кого-то возникнут идеи относительно этой версии бота - ставьте PR, я только рад. Т.к. несмотря на то, что развитие этой версии "слегка" заморожено, поддерживать её планируется как минимум до выхода в свет 4-й версии бота.
Что это такое
Это бот, основанный на перловых модулях Telegram::Bot для работы в мессенджере Telegram и Hailo для генерации "умной" беседы.
Для корректной работы, пришлось форкнуть Telegram::Bot, чтобы обновить интерфейс API до Telegram Bot API v5. Для избежания неоднозначностей, модуль пришлось переименовать и теперь он идёт в составе бота. Возможно, когда модуль отлежится и будет похож на стабильный, он стнет самостоятельным и поселится на metacpan.org
Конфиг бота должен лежать в data/config.json. Пример конфига расположен в data/sample_config.json.
Бота можно запустить через bin/aleesa-telegram-bot и он взлетит, как юниксовый демон (сделает двойной fork() и отцепится от stdio).
Установка
Приложение тестировалось на alpine linux x86_64 3.12, со встроенным perl-5.32.1.
Чтобы запустить приложение, его надо "забурстрапить" - загрузить и собрать все необходимые зависимости.
Понадобится perl-5.18, а желательно новее, "Development Tools" или подобная группа пакетов , perl, perl-devel, perl-local-lib, perl-app-cpanm, sqlite-devel, zlib-devel, openssl-devel, libdb4-devel (Berkeley DB devel), make.
После установки этих пакетов, можно будет запустить:
bash bootstrap.sh
и, по идее, всё что нужно будет выкачено, собрано и разложено куда надо.
Запуск и работа
Бот не использует вебхуки, поэтому ничего дополнительного, кроме хорошего подключения к интернету ему не нужно.
Дополнительные настройки
Некоторые "плагины" требуют регистрации в сторонних сервисах (API keys, secrets итд), чтобы бот не сыпал ошибками в логи (возможно, в дальнейшем возможно будет отключить эти плагины).
OpenWeatherMap
Для работы погодного плагина, надо заргистрироваться, залогиниться и создать api key. Free plan предлагает всё необхдимое для работы "плагина".
Когда api key будет создан, его нужно вписать в config.json "секцию" openweathermap в качестве appid. На этом всё.
Imgur
Этот плагин "просто есть" и его на самом деле ничто и никто не использует. И в этой связи все настройки плагина можно оставить "как есть" в примере конфига.
Тем не менее, если есть большое желание, то можно залогиниться и зарегистрировать бота как приложение, а потом разрешить приложению пользоваться API-шкой, как описано в этом или этом мануале.
Flickr
Этот "плагин" действительно используется для добычи ссылок на картинки в разных "картиночных" командах бота.
Есть скрипт, который поможет с регистрацией приложения в api Flickr - bin/flickr_init.pl, он достанет все нужные ключи и секреты к ним.
До запуска этого скрипта, бот должен быть забутстраплен через bootstrap.sh.
Залогиньтесь и создайте app in своём Flicker-овском аккаунте. Далее, разлогиньтесь, это нужно, чтобы потом проще было достать параметр verifier.
Запишите app key и secret в config.json. Удостоверьтесь, что параметр "verifier" в конфиге либо закоменчен, либо отсутствует.
Запустите bin/flickr_init.pl и следуте предлагаемым инструкциям - в итоге будет дана ссылка, которую надо скопипастить в браузер. По ссылке предложат залогиниться, далее надо будет разрешить приложению просматривать профиль и, через один-два редиректа, вы попадёте на example.com. Из адресной строки браузера надо скопировать параметр "verifier" и вписать его в config.json.
Чтобы сохранить в бд плагина API access token для нормальной работы "плагина", второй раз запустите bin/flickr_init.pl. На этом всё.