From a95b599bd30bde2dc1cbd51b77a19d7c3cf3ffcf Mon Sep 17 00:00:00 2001 From: Jack Merrill Date: Thu, 26 Oct 2023 10:01:02 -0400 Subject: [PATCH] fix: upload dalle image to discord --- internal/commands/fun/dalle.go | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/internal/commands/fun/dalle.go b/internal/commands/fun/dalle.go index b443edc..6e77df0 100644 --- a/internal/commands/fun/dalle.go +++ b/internal/commands/fun/dalle.go @@ -3,9 +3,11 @@ package fun import ( "context" "fmt" + "net/http" "os" "strings" + "github.com/bwmarrin/discordgo" "github.com/jackmerrill/hampbot/internal/utils/config" "github.com/jackmerrill/hampbot/internal/utils/embed" "github.com/sashabaranov/go-openai" @@ -68,10 +70,31 @@ func (c *Dalle) Exec(ctx shireikan.Context) error { return err } - ctx.ReplyEmbed(embed.NewSuccessEmbed(ctx). - SetTitle("DALL-E"). - SetDescription(prompt). - SetImage(resp.Data[0].URL). - MessageEmbed) + // fetch image from url + img, err := http.Get(resp.Data[0].URL) + if err != nil { + ctx.ReplyEmbed(embed.NewErrorEmbed(ctx).SetDescription("Failed to fetch image.").MessageEmbed) + return err + } + + ctx.GetSession().ChannelMessageSendComplex(ctx.GetChannel().ID, &discordgo.MessageSend{ + Content: "Generated image", + Embed: &discordgo.MessageEmbed{ + Title: "Generated image", + Description: fmt.Sprintf("Prompt: `%s`", prompt), + Image: &discordgo.MessageEmbedImage{ + URL: "attachment://image.png", + }, + Color: 0x00ff00, + }, + Reference: ctx.GetMessage().Reference(), + Files: []*discordgo.File{ + { + Name: "image.png", + ContentType: "image/png", + Reader: img.Body, + }, + }, + }) return nil }