From 25524291a1562283c21600f73e61fe4f0f4c339b Mon Sep 17 00:00:00 2001 From: Mel Date: Wed, 18 May 2022 17:09:45 +0200 Subject: VM command --- pkg/bot/bot.go | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) (limited to 'pkg/bot/bot.go') diff --git a/pkg/bot/bot.go b/pkg/bot/bot.go index abee7bc..81b5548 100644 --- a/pkg/bot/bot.go +++ b/pkg/bot/bot.go @@ -3,10 +3,13 @@ package bot import ( "jinx/pkg/discord" "jinx/pkg/discord/events" + "strings" "github.com/rs/zerolog" ) +const PREFIX = "!" + type Bot struct { client *discord.Discord logger *zerolog.Logger @@ -28,11 +31,7 @@ func (b *Bot) Start() error { msg := m.(events.Message) b.logger.Debug().Msgf("message: %s", msg.Content) - if msg.Content == "ping" { - if err := b.client.SendMessage(msg.ChannelID, "pong"); err != nil { - b.logger.Error().Err(err).Msg("error sending message") - } - } + b.onMessage(msg) }) if err := b.client.Connect(); err != nil { @@ -45,3 +44,29 @@ func (b *Bot) Start() error { func (b *Bot) Stop() error { return b.client.Disconnect() } + +func (b *Bot) onMessage(msg events.Message) { + b.logger.Debug().Msgf("message: %s", msg.Content) + + if strings.HasPrefix(msg.Content, PREFIX) { + cmd := strings.TrimPrefix(msg.Content, PREFIX) + cmd = strings.Fields(cmd)[0] + + rest := strings.TrimPrefix(msg.Content, PREFIX+cmd) + + b.onCommand(cmd, rest, msg) + } +} + +func (b *Bot) onCommand(name string, rest string, msg events.Message) { + if cmd, ok := nameToCmd[name]; ok { + b.logger.Debug().Msg("executing command...") + if err := cmd(b, rest, msg); err != nil { + b.logger.Error().Err(err).Msg("error executing command") + b.client.SendMessage(msg.ChannelID, "error executing command") + } + } else { + b.logger.Debug().Msgf("unknown command: %s", name) + b.client.SendMessage(msg.ChannelID, "unknown command") + } +} -- cgit 1.4.1