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") return err } vm := vm.New(&bc) if err := vm.Run(); err != nil { return err } res, err := vm.GetResult() if err != nil { return err } b.logger.Debug().Msg("executed code") return b.client.SendMessage(msg.ChannelID, res) }