about summary refs log tree commit diff
path: root/pkg/bot/bot.go
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-05-18 17:09:45 +0200
committerMel <einebeere@gmail.com>2022-05-18 17:09:45 +0200
commit25524291a1562283c21600f73e61fe4f0f4c339b (patch)
treee94d65e2a04f4ad5b6619f63f3dbbc6e7b3a21c2 /pkg/bot/bot.go
parent3ca0bfd5bb1c0da28b19ebdd755160b142dad27c (diff)
downloadjinx-25524291a1562283c21600f73e61fe4f0f4c339b.tar.zst
jinx-25524291a1562283c21600f73e61fe4f0f4c339b.zip
VM command
Diffstat (limited to 'pkg/bot/bot.go')
-rw-r--r--pkg/bot/bot.go35
1 files changed, 30 insertions, 5 deletions
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")
+	}
+}