diff options
| author | Mel <einebeere@gmail.com> | 2022-05-18 17:09:45 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-05-18 17:09:45 +0200 |
| commit | 25524291a1562283c21600f73e61fe4f0f4c339b (patch) | |
| tree | e94d65e2a04f4ad5b6619f63f3dbbc6e7b3a21c2 /pkg/bot/cmds.go | |
| parent | 3ca0bfd5bb1c0da28b19ebdd755160b142dad27c (diff) | |
| download | jinx-25524291a1562283c21600f73e61fe4f0f4c339b.tar.zst jinx-25524291a1562283c21600f73e61fe4f0f4c339b.zip | |
VM command
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) +} |
