diff options
| author | Mel <einebeere@gmail.com> | 2022-04-04 14:49:08 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-04-04 14:49:08 +0200 |
| commit | 3160b53ddfb6773624e96c306aec86ac2e80de31 (patch) | |
| tree | d3128595aac92ac561cc3277e0f034cde9e093ab /pkg/bot/bot.go | |
| parent | 8e8bff65922378c1e7eed752add93972e769978d (diff) | |
| download | jinx-3160b53ddfb6773624e96c306aec86ac2e80de31.tar.zst jinx-3160b53ddfb6773624e96c306aec86ac2e80de31.zip | |
Use zerolog
Diffstat (limited to 'pkg/bot/bot.go')
| -rw-r--r-- | pkg/bot/bot.go | 57 |
1 files changed, 36 insertions, 21 deletions
diff --git a/pkg/bot/bot.go b/pkg/bot/bot.go index 9095d7c..add3e56 100644 --- a/pkg/bot/bot.go +++ b/pkg/bot/bot.go @@ -2,49 +2,64 @@ package bot import ( "context" - "fmt" + "errors" "jinx/pkg/discord" - "log" + + "github.com/rs/zerolog" ) type Bot struct { - Client *discord.Discord + client *discord.Discord + logger *zerolog.Logger cancelContext context.CancelFunc } -func Start(token string) (*Bot, error) { - fmt.Println("hi..!") +func NewBot(token string, logger *zerolog.Logger) *Bot { + return &Bot{ + client: discord.NewClient(token, logger), + logger: logger, + cancelContext: nil, + } +} - client := discord.NewClient(token) +func (b *Bot) Start() error { + var err error + ctx, cancel := context.WithCancel(context.Background()) + b.cancelContext = cancel - client.AddEventHandler(discord.DISCORD_EVENT_READY, func(_ any) { - log.Println("bot is ready!") + defer func() { + if err != nil { + cancel() + } + }() + + b.client.AddEventHandler(discord.DISCORD_EVENT_READY, func(_ any) { + b.logger.Info().Msg("ready!") }) - client.AddEventHandler(discord.DISCORD_EVENT_MESSAGE, func(m any) { + b.client.AddEventHandler(discord.DISCORD_EVENT_MESSAGE, func(m any) { msg := m.(discord.GatewayMessageCreateEvent) - log.Printf("message: %s", msg.Content) + b.logger.Debug().Msgf("message: %s", msg.Content) if msg.Content == "ping" { - if err := client.SendMessage(msg.ChannelID, "pong"); err != nil { - log.Printf("error sending message: %s", err) + if err := b.client.SendMessage(msg.ChannelID, "pong"); err != nil { + b.logger.Error().Err(err).Msg("error sending message") } } }) - ctx, cancel := context.WithCancel(context.Background()) - if err := client.Connect(ctx); err != nil { - cancel() - return nil, err + if err := b.client.Connect(ctx); err != nil { + return err } - return &Bot{ - Client: client, - cancelContext: cancel, - }, nil + return nil } func (b *Bot) Stop() error { + if b.cancelContext == nil { + return errors.New("bot has no context") + } + b.cancelContext() - return b.Client.Disconnect() + return b.client.Disconnect() } |
