diff options
Diffstat (limited to 'pkg/bot/cmds.go')
| -rw-r--r-- | pkg/bot/cmds.go | 40 |
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) +} |
