From be6cd2217b6bb1bb411d46ebd9d003dfd928af96 Mon Sep 17 00:00:00 2001 From: Mel Date: Wed, 17 Aug 2022 00:07:35 +0000 Subject: Add different "say" outputs to VM --- pkg/bot/cmds.go | 32 ++++++++++++++++++-------------- pkg/bot/output.go | 19 +++++++++++++++++++ 2 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 pkg/bot/output.go (limited to 'pkg/bot') diff --git a/pkg/bot/cmds.go b/pkg/bot/cmds.go index 32b1bfe..7d451a9 100644 --- a/pkg/bot/cmds.go +++ b/pkg/bot/cmds.go @@ -36,20 +36,23 @@ func vmCmd(b *Bot, content string, msg events.Message) error { return err } - vm := vm.New(modules.NewUnknownModule(&bc)) - - if err := vm.Run(); err != nil { - return err + output := &chatOutput{ + logger: b.logger, + client: b.client, + channel: msg.ChannelID, } - res, err := vm.GetResult() - if err != nil { + vm := vm.New(modules.NewUnknownModule(&bc), output) + + b.logger.Info().Msgf("executing vm bytecode from user %s...", msg.Author.Username) + + if err := vm.Run(); err != nil { return err } b.logger.Debug().Msg("executed code") - return b.client.SendMessage(msg.ChannelID, res) + return nil } func langCmd(b *Bot, content string, msg events.Message) error { @@ -81,20 +84,21 @@ func langCmd(b *Bot, content string, msg events.Message) error { b.client.SendMessage(msg.ChannelID, fmt.Sprintf("resulting decompiled bytecode:\n```\n%s\n```", decompRes)) - vm := vm.New(module) + output := &chatOutput{ + logger: b.logger, + client: b.client, + channel: msg.ChannelID, + } + vm := vm.New(module, output) + b.logger.Info().Msgf("executing code from user %s...", msg.Author.Username) b.client.SendMessage(msg.ChannelID, "executing code...") 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) + return nil } diff --git a/pkg/bot/output.go b/pkg/bot/output.go new file mode 100644 index 0000000..d29a625 --- /dev/null +++ b/pkg/bot/output.go @@ -0,0 +1,19 @@ +package bot + +import ( + "jinx/pkg/discord" + "jinx/pkg/discord/entities" + + "github.com/rs/zerolog" +) + +type chatOutput struct { + logger *zerolog.Logger + client *discord.Discord + channel entities.Snowflake +} + +func (c *chatOutput) Write(p string) error { + c.logger.Info().Msgf("writing lang output: %s", p) + return c.client.SendMessage(c.channel, p) +} -- cgit 1.4.1