// Fantasy World Zookeeper Helper Bot // Copyright (c) 2018 Vladimir "fat0troll" Hodakov package main import ( "source.hodakov.me/fat0troll/fwzookeeper_helper/context" "source.hodakov.me/fat0troll/fwzookeeper_helper/domains/announces/v1" "source.hodakov.me/fat0troll/fwzookeeper_helper/internal/telegram" "os" "os/signal" "runtime" "syscall" ) func main() { // Before any real work - lock to OS thread. We shouldn't leave it until // shutdown runtime.LockOSThread() // Initializing context c := context.NewContext() c.Init() c.InitConfiguration() announcesv1.New(c) telegram.New(c) // CTRL+C handler. interrupt := make(chan os.Signal, 1) signal.Notify(interrupt) shutdownDone := make(chan bool, 1) go func() { signalThing := <-interrupt if signalThing == syscall.SIGTERM || signalThing == syscall.SIGINT { c.Logger.Info().Msg("Got " + signalThing.String() + " signal, shutting down...") telegram.Shutdown() shutdownDone <- true } }() <-shutdownDone os.Exit(0) }