about summary refs log tree commit diff
path: root/pkg/bot/cmds.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/bot/cmds.go')
-rw-r--r--pkg/bot/cmds.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/pkg/bot/cmds.go b/pkg/bot/cmds.go
new file mode 100644
index 0000000..1dfb2cb
--- /dev/null
+++ b/pkg/bot/cmds.go
@@ -0,0 +1,40 @@
+package bot
+
+import (
+	"jinx/pkg/discord/events"
+	"jinx/pkg/lang/vm"
+	"jinx/pkg/lang/vm/text"
+	"strings"
+)
+
+type Cmd func(b *Bot, content string, msg events.Message) error
+
+var (
+	nameToCmd = map[string]Cmd{
+		"ping": pingCmd,
+		"vm":   vmCmd,
+	}
+)
+
+func pingCmd(b *Bot, content string, msg events.Message) error {
+	return b.client.SendMessage(msg.ChannelID, "pong")
+}
+
+func vmCmd(b *Bot, content string, msg events.Message) error {
+	src := strings.Split(content, "```")[1]
+
+	comp := text.NewCompiler(strings.NewReader(src))
+	bc, err := comp.Compile()
+	if err != nil {
+		b.logger.Error().Err(err).Msg("error compiling code")
+	}
+
+	vm := vm.New(&bc)
+
+	vm.Run()
+	res := vm.GetResult()
+
+	b.logger.Debug().Msg("executed code")
+
+	return b.client.SendMessage(msg.ChannelID, res)
+}