Initial commit
This commit is contained in:
71
cmd/tg-holy-bot/main.go
Normal file
71
cmd/tg-holy-bot/main.go
Normal 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: */
|
||||
Reference in New Issue
Block a user