mirror of
https://github.com/ChuckNorrison/LightningTipBot.git
synced 2026-08-13 12:33:14 +02:00
Merge remote-tracking branch 'origin/mutex_states' into mutex_states
# Conflicts: # internal/telegram/generate.go
This commit is contained in:
commit
5aa76f86da
1 changed files with 22 additions and 15 deletions
|
|
@ -121,13 +121,13 @@ func (bot *TipBot) generateDalleImages(event Event) {
|
|||
return
|
||||
}
|
||||
bot.trySendMessage(user.Telegram, "🔄 Your images are being generated. Please wait a few moments.")
|
||||
var job = func(worker int) {
|
||||
var job = func(workerId int) {
|
||||
// create the client with the bearer token api key
|
||||
dalleClient, err := dalle.NewHTTPClient(internal.Configuration.Generate.DalleKey)
|
||||
// handle err
|
||||
if err != nil {
|
||||
log.Errorf("[NewHTTPClient-%d] %v", worker, err.Error())
|
||||
bot.dalleRefundUser(user)
|
||||
log.Errorf("[NewHTTPClient-%d] %v", workerId, err.Error())
|
||||
bot.dalleRefundUser(user,"")
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -136,8 +136,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("[Generate-%d] %v", worker, err.Error())
|
||||
bot.dalleRefundUser(user)
|
||||
log.Errorf("[Generate-%d] %v", workerId, err.Error())
|
||||
bot.dalleRefundUser(user,"")
|
||||
return
|
||||
}
|
||||
// poll the task.ID until status is succeeded
|
||||
|
|
@ -148,13 +148,13 @@ func (bot *TipBot) generateDalleImages(event Event) {
|
|||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
bot.dalleRefundUser(user)
|
||||
log.Errorf("[DALLE-%d] ctx done", worker)
|
||||
bot.dalleRefundUser(user,"")
|
||||
log.Errorf("[DALLE-%d] ctx done", workerId)
|
||||
return
|
||||
// Got a timeout! fail with a timeout error
|
||||
case <-timeout:
|
||||
bot.dalleRefundUser(user)
|
||||
log.Errorf("[DALLE-%d] timeout", worker)
|
||||
bot.dalleRefundUser(user,"Timeout. Please try again later.")
|
||||
log.Errorf("[DALLE-%d] timeout", workerId)
|
||||
return
|
||||
// Got a tick, we should check on checkSomething()
|
||||
case <-ticker:
|
||||
|
|
@ -162,7 +162,7 @@ func (bot *TipBot) generateDalleImages(event Event) {
|
|||
// handle err
|
||||
if err != nil {
|
||||
log.Errorf("[GetTask] %v", err.Error())
|
||||
bot.dalleRefundUser(user)
|
||||
bot.dalleRefundUser(user,"")
|
||||
return
|
||||
}
|
||||
if t.Status == dalle.StatusSucceeded {
|
||||
|
|
@ -177,8 +177,8 @@ func (bot *TipBot) generateDalleImages(event Event) {
|
|||
return
|
||||
|
||||
} else if t.Status == dalle.StatusRejected {
|
||||
log.Errorf("[DALLE-%d] rejected: %s", worker, t.ID)
|
||||
bot.dalleRefundUser(user)
|
||||
log.Errorf("[DALLE-%d] rejected: %s", workerId, t.ID)
|
||||
bot.dalleRefundUser(user,"Your prompt has been rejected by OpenAI. Do not use celebrity names, sexual expressions, or any other harmful content as prompt.")
|
||||
return
|
||||
}
|
||||
log.Debugf("[DALLE-%d] pending for user %s", worker, GetUserStr(user.Telegram))
|
||||
|
|
@ -214,7 +214,7 @@ func (bot *TipBot) downloadAndSendImages(ctx context.Context, dalleClient dalle.
|
|||
return nil
|
||||
}
|
||||
|
||||
func (bot *TipBot) dalleRefundUser(user *lnbits.User) error {
|
||||
func (bot *TipBot) dalleRefundUser(user *lnbits.User, message string) error {
|
||||
if user.Wallet == nil {
|
||||
return fmt.Errorf("user has no wallet")
|
||||
}
|
||||
|
|
@ -228,7 +228,7 @@ func (bot *TipBot) dalleRefundUser(user *lnbits.User) error {
|
|||
lnbits.InvoiceParams{
|
||||
Out: false,
|
||||
Amount: int64(internal.Configuration.Generate.DallePrice),
|
||||
Memo: "Refund for /generate",
|
||||
Memo: fmt.Sprintf("Refund DALLE2 %s", GetUserStr(user.Telegram)),
|
||||
Webhook: internal.Configuration.Lnbits.WebhookServer},
|
||||
bot.Client)
|
||||
if err != nil {
|
||||
|
|
@ -242,6 +242,13 @@ func (bot *TipBot) dalleRefundUser(user *lnbits.User) error {
|
|||
return err
|
||||
}
|
||||
log.Warnf("[DALLE] refunding user %s with %d sat", GetUserStr(user.Telegram), internal.Configuration.Generate.DallePrice)
|
||||
bot.trySendMessage(user.Telegram, "🚫 Something went wrong. You have been refunded.")
|
||||
|
||||
var err_reason string
|
||||
if len(message) > 0 {
|
||||
err_reason = message
|
||||
} else {
|
||||
err_reason = "Something went wrong."
|
||||
}
|
||||
bot.trySendMessage(user.Telegram, fmt.Sprintf("🚫 %s You have been refunded.", err_reason))
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue