Initial commit

This commit is contained in:
eleksir
2026-03-14 22:51:43 +03:00
commit 0a73bca056
105 changed files with 24685 additions and 0 deletions

71
cmd/tg-holy-bot/main.go Normal file
View File

@@ -0,0 +1,71 @@
// Package main implements entry point for this telegram bot service.
package main
import (
"os/signal"
"syscall"
"tg-holy-bot/internal/holy"
"tg-holy-bot/internal/log"
"github.com/NicoNex/echotron/v3"
"github.com/robfig/cron/v3"
)
func main() {
var (
err error
)
if err = holy.ReadConfig(); err != nil {
log.Fatalf("%s", err)
}
if err = log.Init(holy.Config.Loglevel, holy.Config.Log); err != nil {
log.Fatalf("%s", err)
}
log.Info("Starting bot")
// Самое время поставить трапы на сигналы.
signal.Notify(holy.SigChan,
syscall.SIGINT,
syscall.SIGTERM,
syscall.SIGQUIT)
// Запустим обработчик сигналов.
log.Info("Install signal handler")
go holy.SigHandler()
// Инициализируем бота.
log.Info("Initialize bot api client")
holy.Bot = echotron.NewAPI(holy.Config.Token)
log.Info("Create cron")
c := cron.New()
log.Infof("Add cron task %s to periodically run holiday client", holy.Config.When)
if _, err := c.AddFunc(holy.Config.When, holy.CronTask); err != nil {
log.Fatalf("Unable to add task to cron: %s", err)
}
log.Infof("Run cron")
c.Start()
// Залочимся до момента завершения программы.
<-holy.Run
log.Infof("Stop cron")
// Jobs usually runs in a fraction of second, don't bother waiting for their completion.
_ = c.Stop()
log.Infof("Shutdown bot")
log.Close()
}
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */