55 lines
3.0 KiB
Markdown
55 lines
3.0 KiB
Markdown
## tg-holy-bot
|
|
|
|
Телеграммный бот для канала с праздниками. Раз в сутки забирает список праздников с к сайта celebratoday.com и
|
|
показывает его на канальчике в телеграме. Создан исключительно в обучающих целях, как пример приложения на языке go.
|
|
|
|
## Как это собрать?
|
|
|
|
Понадобится компилятор go версии 1.25.3 или более новый.
|
|
|
|
Сам процесс сборки простой, достаточно запустить make или gmake, в зависимости от платформы:
|
|
|
|
```bash
|
|
make
|
|
```
|
|
|
|
и через некоторое время мы получаем бинарник **tg-holy-bot**. Это и есть наше приложение.
|
|
|
|
### Как это запустить?
|
|
|
|
Приложение тестировалось на alpine linux x86_64 3.16, но должно работать на любом (более свежем) linux-е.
|
|
|
|
Предполагается, что конфиг написан в формате [human json](https://hjson.github.io), который допускает коментарии и
|
|
некоторые другие вольности в форматировании json-а. Конфиг ищется последовательно по следующим путям по принципу "кто
|
|
первый того и тапки":
|
|
|
|
```
|
|
~/.tg-holy-bot.json
|
|
/etc/tg-holy-bot.json
|
|
data/config.json
|
|
```
|
|
|
|
В каталоге contrib находится скрипт для alpine linux, системы инициализации openrc. Этот скрипт достаточно положить в
|
|
**/etc/init.d/tg-holy-bot**. После чего скопировать бинарник в каталог **/var/lib/tg-holy-bot**, положить
|
|
конфиг в одну из дефолтных локаций (тестировалась **/var/lib/tg-holy-bot/data/config.json**) и после этого сервис
|
|
запускается командой:
|
|
|
|
```bash
|
|
service tg-holy-bot start
|
|
```
|
|
|
|
В автозагрузку его можно прописать через команду:
|
|
|
|
```bash
|
|
rc-update add tg-holy-bot default
|
|
```
|
|
|
|
### Nota Bene
|
|
|
|
Go не поддерживает системный вызов fork() из-за чего демонизация программ на гошке средствами самой гошки - это в
|
|
некотором роде проблема. Решается она с помощью утилиты [daemonize](https://github.com/bmc/daemonize).
|
|
|
|
Соответствено, если для запуска этой программы предполагается использовать возможности демонизации, то можно
|
|
воспользоваться этой программой.
|
|
|
|
В alpine linux есть средства openrc для супервайзинга foreground-сервисов. |