grim/wasdead

make the status command require a mention
draft
2019-06-08, Gary Kramlich
947250a2da50
make the status command require a mention
package run
import (
"os"
"os/signal"
"syscall"
"time"
log "github.com/sirupsen/logrus"
"bitbucket.org/rw_grim/wasdead/database"
"bitbucket.org/rw_grim/wasdead/discord"
"bitbucket.org/rw_grim/wasdead/globals"
"bitbucket.org/rw_grim/wasdead/presence"
"bitbucket.org/rw_grim/wasdead/twitch"
)
type RunCmd struct {
DiscordToken string `kong:"flag,name='discord-token',env='DISCORD_TOKEN',help='The bot token for discord',required"`
TwitchClientID string `kong:"flag,name='twitch-client-id',env='TWITCH_CLIENT_ID',help='The Twitch client ID',required"`
}
var (
startTime time.Time
)
func init() {
log.SetOutput(os.Stdout)
log.SetLevel(log.DebugLevel)
}
func (r *RunCmd) Run(g *globals.Globals) error {
if err := database.Open(g.DatabasePath); err != nil {
return err
}
defer database.Close()
if len(r.TwitchClientID) > 0 {
provider, err := twitch.New(r.TwitchClientID)
if err != nil {
log.Panic(err)
}
presence.AddProvider("twitch.tv", provider)
log.Info("Added twitch provider")
}
// create our error channel that's used by the various clients
errChan := make(chan error, 1)
// create the discord client
dc, err := discord.New(r.DiscordToken)
if err != nil {
return err
}
dc.Start(errChan)
defer dc.Shutdown()
log.Info("Connected to discord")
// create a channel for handling unix signals
signalChan := make(chan os.Signal, 1)
signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill)
// start the main loop
log.Info("Bot is now running. Press CTRL-C to exit.")
for {
select {
case err := <-errChan:
if err != nil {
return err
}
case s := <-signalChan:
log.Infof("caught %s Exiting...", s)
return nil
}
}
return nil
}