Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aleesa-bot/aleesa-phrases-go
https://github.com/aleesa-bot/aleesa-phrases-go
Last synced: 6 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/aleesa-bot/aleesa-phrases-go
- Owner: aleesa-bot
- License: mit
- Created: 2022-05-15T23:18:33.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-07-24T19:58:09.000Z (6 months ago)
- Last Synced: 2024-11-16T12:17:09.850Z (2 months ago)
- Language: Go
- Homepage:
- Size: 7.12 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
- License: LICENSE.txt
Awesome Lists containing this project
README
aleesa-phrases-go
-----------------------------------------------------------------------------------------------------------------------
Отвечалка готовыми словарными фразами.
* Фортунки (на основе фраз из fortune_mod)
* Пятница
* Пословицы и поговорки
* КармаМеханика работы
-----------------------------------------------------------------------------------------------------------------------
Сервис подписан на канал phrases. В этот канал пишет другой демоночек - aleesa-misc-go. Ответ направляется в
redis-канал, указанный в поле plugin входящего сообщения.Формат протокола - см README от aleesa-misc-go.
Как это собрать?
-----------------------------------------------------------------------------------------------------------------------
Понадобится golang версии 1.19 или более новая.Сам процесс сборки простой, достаточно запустить:
makeи через некоторое время мы получаем бинарники aleesa-phrases-go и seed-{proverb,fortune,friday}. Это и есть наше
приложение и вспомогательные утилиты для "засеевания" соответствующих бд данными.Как это запустить?
-----------------------------------------------------------------------------------------------------------------------
Приложение тестировалось на alpine linux x86_64 3.16, но должно работать на любом (более свежем) linux-е.Предполагается, что конфиг написан в формате human json (https://hjson.github.io), который допускает комментарии и
некоторые другие вольности в форматировании json-а. Конфиг ищется последовательно по следующим путям по принципу "кто
первый того и тапки":
~/.aleesa-phrases-go.json
~/aleesa-phrases-go.json
/etc/aleesa-phrases-go.json
data/config.jsonПосле создания конфига из data/config_sample.json, можно наполнять базки ответов данными из исходных текстов ответов.
Для этого последовательно запускаем:
seed-friday
seed-fortune
seed-proverbВ каталоге contrib находится скрипт для alpine linux, системы инициализации openrc. Этот скрипт достаточно положить в
/etc/init.d/aleesa-phrases-go. После чего скопировать бинарник в каталог /var/lib/aleesa-misc-go, положить конфиг в
одну из дефолтных локаций (тестировалась /var/lib/aleesa-phrases-go/data/config.json) и после этого сервис запускается
командой:
service aleesa-phrases-go startВ автозагрузку его можно прописать через команду:
rc-update add aleesa-phrases-go defaultВендоринг зависимостей
-----------------------------------------------------------------------------------------------------------------------
Для обновления завендоренных зависимостей надо запустить:
make upgradeв этом случае каталог vendor будет пересоздан и в него скопируются все нужные для сборки go-шные модули.
Обновлять вендоринг обычно требуется только в процессе разработки.
Nota Bene
-----------------------------------------------------------------------------------------------------------------------
По механике, в процессе работы мы форкаем горутинки на каждое входящее сообщение, особо не контроллируя этот процесс.
Предполагается, что на эту программу не будет большой нагрузки, даже если будет несколько ботов на входе - ограничения
телеграма и других мессенджеров не должны дать возможности развить достаточно большой message rate, чтобы об это
споткнуться.Формально, более удачным было бы иметь автоматический пул воркеров-горутинок и раскидывать им через channel-ы
сообщения. Внутри каждой горутинки можно было бы повиcнуть в бесконечном цикле на канале входящих сообщений и так и
работать. Но на практике оно того не стОит.Nota Bene #2
-----------------------------------------------------------------------------------------------------------------------
Go не поддерживает системный вызов fork() из-за чего демонизация программ на гошке средствами самой гошки - это в
некотором роде проблема. Решается она с помощью утилиты daemonize (https://github.com/bmc/daemonize).Соответствено, если для запуска этой программы предполагается использовать возможности демонизации, то можно
воспользоваться этой программой.В alpine linux есть средства openrc для супервайзинга foreground-сервисов.