downloadAndSendImages + log

This commit is contained in:
gohumble 2022-08-30 17:48:56 +02:00
parent 3c862d59ff
commit 6bdd24e4a3

View file

@ -97,6 +97,7 @@ func (bot *TipBot) generateDalleImages(event Event) {
invoiceEvent := event.(*InvoiceEvent)
user := invoiceEvent.Payer
if user == nil || user.Wallet == nil {
log.Errorf("[generateDalleImages] invalid user")
return
}
// create the client with the bearer token api key
@ -104,6 +105,7 @@ func (bot *TipBot) generateDalleImages(event Event) {
dalleClient, err := dalle.NewHTTPClient(internal.Configuration.Generate.DalleKey)
// handle err
if err != nil {
log.Errorf("[generateDalleImages] %v", err.Error())
return
}
@ -112,7 +114,8 @@ func (bot *TipBot) generateDalleImages(event Event) {
// generate a task to create an image with a prompt
task, err := dalleClient.Generate(ctx, invoiceEvent.CallbackData)
if err != nil {
log.Errorf("[generateDalleImages] %v", err.Error())
return
}
// poll the task.ID until status is succeeded
@ -127,7 +130,7 @@ func (bot *TipBot) generateDalleImages(event Event) {
fmt.Println("task succeeded")
break
} else if t.Status == dalle.StatusRejected {
log.Fatal("rejected: ", t.ID)
log.Errorf("rejected: %s", t.ID)
}
fmt.Println("task still pending")
@ -135,28 +138,33 @@ func (bot *TipBot) generateDalleImages(event Event) {
// download the first generated image
for _, data := range t.Generations.Data {
reader, err := dalleClient.Download(ctx, data.ID)
if err != nil {
return
}
defer reader.Close()
file, err := os.Create("data/dalle/" + data.ID + ".png")
if err != nil {
return
}
defer file.Close()
_, err = io.Copy(file, reader)
if err != nil {
return
}
f, err := os.OpenFile("data/dalle/"+data.ID+".png", 0, os.ModePerm)
if err != nil {
return
}
bot.trySendMessage(invoiceEvent.Payer.Telegram, &tb.Photo{File: tb.File{FileReader: f}})
downloadAndSendImages(ctx, bot, dalleClient, data, invoiceEvent)
}
// handle err and close readCloser
}
// downloadAndSendImages will download dalle images and send them to the payer.
func downloadAndSendImages(ctx context.Context, bot *TipBot, dalleClient dalle.Client, data dalle.GenerationData, event *InvoiceEvent) {
reader, err := dalleClient.Download(ctx, data.ID)
if err != nil {
return
}
defer reader.Close()
image := "data/dalle/" + data.ID + ".png"
file, err := os.Create(image)
if err != nil {
return
}
defer file.Close()
_, err = io.Copy(file, reader)
if err != nil {
return
}
f, err := os.OpenFile(image, 0, os.ModePerm)
if err != nil {
return
}
defer f.Close()
bot.trySendMessage(event.Payer.Telegram, &tb.Photo{File: tb.File{FileReader: f}})
}