From 09d3af411e920bab8a402fb4f6bb2b4a8d5b70b0 Mon Sep 17 00:00:00 2001 From: LightningTipBot <88730856+LightningTipBot@users.noreply.github.com> Date: Fri, 24 Dec 2021 15:34:17 +0100 Subject: [PATCH] Better longging 1337 (#206) * speed up tx lock * better logging and lnurl lightning: prefix Co-authored-by: callebtc <93376500+callebtc@users.noreply.github.com> --- internal/lnbits/webhook/webhook.go | 4 ++-- internal/lnurl/lnurl.go | 4 ++-- internal/storage/base.go | 8 ++++---- internal/telegram/inline_faucet.go | 12 ++++++------ internal/telegram/inline_query.go | 2 +- internal/telegram/inline_receive.go | 16 +++++++-------- internal/telegram/inline_send.go | 6 +++--- internal/telegram/inline_tipjar.go | 10 +++++----- internal/telegram/invoice.go | 6 +++--- internal/telegram/link.go | 2 +- internal/telegram/lnurl-withdraw.go | 2 +- internal/telegram/lnurl.go | 7 ++++--- internal/telegram/pay.go | 8 ++++---- internal/telegram/photo.go | 6 +++--- internal/telegram/send.go | 6 +++--- internal/telegram/shop.go | 30 ++++++++++++++--------------- internal/telegram/shop_helpers.go | 2 +- internal/telegram/start.go | 6 +++--- internal/telegram/tip.go | 2 +- pkg/lightning/lightning.go | 2 +- 20 files changed, 71 insertions(+), 70 deletions(-) diff --git a/internal/lnbits/webhook/webhook.go b/internal/lnbits/webhook/webhook.go index 27f3bce..211b9c7 100644 --- a/internal/lnbits/webhook/webhook.go +++ b/internal/lnbits/webhook/webhook.go @@ -87,13 +87,13 @@ func (w *Server) receive(writer http.ResponseWriter, request *http.Request) { request.Header.Del("content-length") err := json.NewDecoder(request.Body).Decode(&webhookEvent) if err != nil { - log.Errorf("[Webhook] Error decoding request: %s", err) + log.Errorf("[Webhook] Error decoding request: %s", err.Error()) writer.WriteHeader(400) return } user, err := w.GetUserByWalletId(webhookEvent.WalletID) if err != nil { - log.Errorf("[Webhook] Error getting user: %s", err) + log.Errorf("[Webhook] Error getting user: %s", err.Error()) writer.WriteHeader(400) return } diff --git a/internal/lnurl/lnurl.go b/internal/lnurl/lnurl.go index ba939d6..26c9702 100644 --- a/internal/lnurl/lnurl.go +++ b/internal/lnurl/lnurl.go @@ -57,7 +57,7 @@ func (w Server) handleLnUrl(writer http.ResponseWriter, request *http.Request) { // check if error was returned from first or second handlers if err != nil { // log the error - log.Errorf("[LNURL] %v", err) + log.Errorf("[LNURL] %v", err.Error()) if response != nil { // there is a valid error response err = writeResponse(writer, response) @@ -161,7 +161,7 @@ func (w Server) serveLNURLpSecond(username string, amount_msat int64, comment st Webhook: w.WebhookServer}, w.c) if err != nil { - err = fmt.Errorf("[serveLNURLpSecond] Couldn't create invoice: %v", err) + err = fmt.Errorf("[serveLNURLpSecond] Couldn't create invoice: %v", err.Error()) resp = &lnurl.LNURLPayValues{ LNURLResponse: lnurl.LNURLResponse{ Status: statusError, diff --git a/internal/storage/base.go b/internal/storage/base.go index 5497f0d..4841a35 100644 --- a/internal/storage/base.go +++ b/internal/storage/base.go @@ -1,9 +1,10 @@ package storage import ( + "time" + "github.com/eko/gocache/store" gocache "github.com/patrickmn/go-cache" - "time" log "github.com/sirupsen/logrus" ) @@ -55,7 +56,6 @@ func (tx *Base) Inactivate(s Storable, db *DB) error { func (tx *Base) Get(s Storable, db *DB) (Storable, error) { cacheTx, err := transactionCache.Get(s.Key()) if err != nil { - log.Errorf("[Bunt Cache] could not get bunt object: %v", err) err := db.Get(s) if err != nil { return s, err @@ -72,13 +72,13 @@ func (tx *Base) Set(s Storable, db *DB) error { tx.UpdatedAt = time.Now() err := db.Set(s) if err != nil { - log.Errorf("[Bunt] could not set object: %v", err) + log.Errorf("[Bunt] could not set object: %v", err.Error()) return err } log.Tracef("[Bunt] set object %s", s.Key()) err = transactionCache.Set(s.Key(), s, &store.Options{Expiration: 5 * time.Minute}) if err != nil { - log.Errorf("[Bunt Cache] could not set object: %v", err) + log.Errorf("[Bunt Cache] could not set object: %v", err.Error()) } log.Tracef("[Bunt Cache] set object: %s", s.Key()) return err diff --git a/internal/telegram/inline_faucet.go b/internal/telegram/inline_faucet.go index ea247eb..8e8021a 100644 --- a/internal/telegram/inline_faucet.go +++ b/internal/telegram/inline_faucet.go @@ -75,7 +75,7 @@ func (bot TipBot) createFaucet(ctx context.Context, text string, sender *tb.User } // check if fromUser has balance if balance < amount { - return nil, errors.New(errors.BalanceToLowError, fmt.Errorf("[faucet] Balance of user %s too low: %v", fromUserStr, err)) + return nil, errors.New(errors.BalanceToLowError, fmt.Errorf("[faucet] Balance of user %s too low: %v", fromUserStr, err.Error())) } // // check for memo in command memo := GetMemoFromCommand(text, 3) @@ -228,7 +228,7 @@ func (bot TipBot) handleInlineFaucetQuery(ctx context.Context, q *tb.Query) { CacheTime: 1, }) if err != nil { - log.Errorln(err) + log.Errorln(err.Error()) } } @@ -239,7 +239,7 @@ func (bot *TipBot) acceptInlineFaucetHandler(ctx context.Context, c *tb.Callback defer mutex.UnlockWithContext(ctx, tx.ID) fn, err := tx.Get(tx, bot.Bunt) if err != nil { - log.Debugf("[acceptInlineFaucetHandler] %s", err) + log.Debugf("[acceptInlineFaucetHandler] %s", err.Error()) return } inlineFaucet := fn.(*InlineFaucet) @@ -295,7 +295,7 @@ func (bot *TipBot) acceptInlineFaucetHandler(ctx context.Context, c *tb.Callback success, err := t.Send() if !success { bot.trySendMessage(from.Telegram, Translate(ctx, "sendErrorMessage")) - errMsg := fmt.Sprintf("[faucet] Transaction failed: %s", err) + errMsg := fmt.Sprintf("[faucet] Transaction failed: %s", err.Error()) log.Warnln(errMsg) // if faucet fails, cancel it: // c.Sender.ID = inlineFaucet.From.Telegram.ID // overwrite the sender of the callback to be the faucet owner @@ -312,7 +312,7 @@ func (bot *TipBot) acceptInlineFaucetHandler(ctx context.Context, c *tb.Callback _, err = bot.Telegram.Send(to.Telegram, fmt.Sprintf(i18n.Translate(to.Telegram.LanguageCode, "inlineFaucetReceivedMessage"), fromUserStrMd, inlineFaucet.PerUserAmount)) _, err = bot.Telegram.Send(from.Telegram, fmt.Sprintf(i18n.Translate(from.Telegram.LanguageCode, "inlineFaucetSentMessage"), inlineFaucet.PerUserAmount, toUserStrMd)) if err != nil { - errmsg := fmt.Errorf("[faucet] Error: Send message to %s: %s", toUserStr, err) + errmsg := fmt.Errorf("[faucet] Error: Send message to %s: %s", toUserStr, err.Error()) log.Warnln(errmsg) } @@ -347,7 +347,7 @@ func (bot *TipBot) cancelInlineFaucet(ctx context.Context, c *tb.Callback, ignor defer mutex.UnlockWithContext(ctx, tx.ID) fn, err := tx.Get(tx, bot.Bunt) if err != nil { - log.Debugf("[cancelInlineFaucetHandler] %s", err) + log.Debugf("[cancelInlineFaucetHandler] %s", err.Error()) return } diff --git a/internal/telegram/inline_query.go b/internal/telegram/inline_query.go index 7326982..32d4596 100644 --- a/internal/telegram/inline_query.go +++ b/internal/telegram/inline_query.go @@ -102,7 +102,7 @@ func (bot TipBot) anyChosenInlineHandler(q *tb.ChosenInlineResult) { inlineObject, err := bot.Cache.Get(q.ResultID) // check error if err != nil { - log.Errorf("[anyChosenInlineHandler] could not find inline object in cache. %v", err) + log.Errorf("[anyChosenInlineHandler] could not find inline object in cache. %v", err.Error()) return } switch inlineObject.(type) { diff --git a/internal/telegram/inline_receive.go b/internal/telegram/inline_receive.go index 43806fa..9cad000 100644 --- a/internal/telegram/inline_receive.go +++ b/internal/telegram/inline_receive.go @@ -150,7 +150,7 @@ func (bot *TipBot) acceptInlineReceiveHandler(ctx context.Context, c *tb.Callbac defer mutex.UnlockWithContext(ctx, tx.ID) rn, err := tx.Get(tx, bot.Bunt) if err != nil { - log.Errorf("[getInlineReceive] %s", err) + log.Errorf("[getInlineReceive] %s", err.Error()) return } inlineReceive := rn.(*InlineReceive) @@ -184,7 +184,7 @@ func (bot *TipBot) acceptInlineReceiveHandler(ctx context.Context, c *tb.Callbac balance, err := bot.GetUserBalance(from) if err != nil { - errmsg := fmt.Sprintf("[inlineReceive] Error: Could not get user balance: %s", err) + errmsg := fmt.Sprintf("[inlineReceive] Error: Could not get user balance: %s", err.Error()) log.Warnln(errmsg) } @@ -208,7 +208,7 @@ func (bot *TipBot) sendInlineReceiveHandler(ctx context.Context, c *tb.Callback) rn, err := tx.Get(tx, bot.Bunt) // immediatelly set intransaction to block duplicate calls if err != nil { - // log.Errorf("[getInlineReceive] %s", err) + // log.Errorf("[getInlineReceive] %s", err.Error()) return } inlineReceive := rn.(*InlineReceive) @@ -248,7 +248,7 @@ func (bot *TipBot) sendInlineReceiveHandler(ctx context.Context, c *tb.Callback) t.Memo = transactionMemo success, err := t.Send() if !success { - errMsg := fmt.Sprintf("[acceptInlineReceiveHandler] Transaction failed: %s", err) + errMsg := fmt.Sprintf("[acceptInlineReceiveHandler] Transaction failed: %s", err.Error()) log.Errorln(errMsg) bot.tryEditMessage(c.Message, i18n.Translate(inlineReceive.LanguageCode, "inlineReceiveFailedMessage"), &tb.ReplyMarkup{}) return @@ -266,7 +266,7 @@ func (bot *TipBot) inlineReceiveInvoice(ctx context.Context, c *tb.Callback, inl } invoice, err := bot.createInvoiceWithEvent(ctx, inlineReceive.To, inlineReceive.Amount, fmt.Sprintf("Pay to %s", GetUserStr(inlineReceive.To.Telegram)), InvoiceCallbackInlineReceive, inlineReceive.ID) if err != nil { - errmsg := fmt.Sprintf("[/invoice] Could not create an invoice: %s", err) + errmsg := fmt.Sprintf("[/invoice] Could not create an invoice: %s", err.Error()) bot.tryEditMessage(inlineReceive.Message, Translate(ctx, "errorTryLaterMessage")) log.Errorln(errmsg) return @@ -275,7 +275,7 @@ func (bot *TipBot) inlineReceiveInvoice(ctx context.Context, c *tb.Callback, inl // create qr code qr, err := qrcode.Encode(invoice.PaymentRequest, qrcode.Medium, 256) if err != nil { - errmsg := fmt.Sprintf("[/invoice] Failed to create QR code for invoice: %s", err) + errmsg := fmt.Sprintf("[/invoice] Failed to create QR code for invoice: %s", err.Error()) bot.tryEditMessage(inlineReceive.Message, Translate(ctx, "errorTryLaterMessage")) log.Errorln(errmsg) return @@ -307,7 +307,7 @@ func (bot *TipBot) finishInlineReceiveHandler(ctx context.Context, c *tb.Callbac defer mutex.UnlockWithContext(ctx, tx.ID) rn, err := tx.Get(tx, bot.Bunt) if err != nil { - log.Errorf("[getInlineReceive] %s", err) + log.Errorf("[getInlineReceive] %s", err.Error()) return } inlineReceive := rn.(*InlineReceive) @@ -345,7 +345,7 @@ func (bot *TipBot) cancelInlineReceiveHandler(ctx context.Context, c *tb.Callbac // immediatelly set intransaction to block duplicate calls rn, err := tx.Get(tx, bot.Bunt) if err != nil { - log.Errorf("[cancelInlineReceiveHandler] %s", err) + log.Errorf("[cancelInlineReceiveHandler] %s", err.Error()) return } inlineReceive := rn.(*InlineReceive) diff --git a/internal/telegram/inline_send.go b/internal/telegram/inline_send.go index 4c7fc36..bc0d62f 100644 --- a/internal/telegram/inline_send.go +++ b/internal/telegram/inline_send.go @@ -166,7 +166,7 @@ func (bot *TipBot) acceptInlineSendHandler(ctx context.Context, c *tb.Callback) sn, err := tx.Get(tx, bot.Bunt) // immediatelly set intransaction to block duplicate calls if err != nil { - // log.Errorf("[acceptInlineSendHandler] %s", err) + // log.Errorf("[acceptInlineSendHandler] %s", err.Error()) return } inlineSend := sn.(*InlineSend) @@ -222,7 +222,7 @@ func (bot *TipBot) acceptInlineSendHandler(ctx context.Context, c *tb.Callback) t.Memo = transactionMemo success, err := t.Send() if !success { - errMsg := fmt.Sprintf("[sendInline] Transaction failed: %s", err) + errMsg := fmt.Sprintf("[sendInline] Transaction failed: %s", err.Error()) log.Errorln(errMsg) bot.tryEditMessage(c.Message, i18n.Translate(inlineSend.LanguageCode, "inlineSendFailedMessage"), &tb.ReplyMarkup{}) return @@ -255,7 +255,7 @@ func (bot *TipBot) cancelInlineSendHandler(ctx context.Context, c *tb.Callback) // immediatelly set intransaction to block duplicate calls sn, err := tx.Get(tx, bot.Bunt) if err != nil { - log.Errorf("[cancelInlineSendHandler] %s", err) + log.Errorf("[cancelInlineSendHandler] %s", err.Error()) return } inlineSend := sn.(*InlineSend) diff --git a/internal/telegram/inline_tipjar.go b/internal/telegram/inline_tipjar.go index 6a4903f..6a71bee 100644 --- a/internal/telegram/inline_tipjar.go +++ b/internal/telegram/inline_tipjar.go @@ -183,7 +183,7 @@ func (bot TipBot) tipjarHandler(ctx context.Context, m *tb.Message) { ctx = bot.mapTipjarLanguage(ctx, m.Text) inlineTipjar, err := bot.makeTipjar(ctx, m, false) if err != nil { - log.Errorf("[tipjar] %s", err) + log.Errorf("[tipjar] %s", err.Error()) return } toUserStr := GetUserStr(m.Sender) @@ -195,7 +195,7 @@ func (bot TipBot) tipjarHandler(ctx context.Context, m *tb.Message) { func (bot TipBot) handleInlineTipjarQuery(ctx context.Context, q *tb.Query) { inlineTipjar, err := bot.makeQueryTipjar(ctx, q, false) if err != nil { - // log.Errorf("[tipjar] %s", err) + // log.Errorf("[tipjar] %s", err.Error()) return } urls := []string{ @@ -240,7 +240,7 @@ func (bot *TipBot) acceptInlineTipjarHandler(ctx context.Context, c *tb.Callback defer mutex.UnlockWithContext(ctx, tx.ID) fn, err := tx.Get(tx, bot.Bunt) if err != nil { - // log.Errorf("[tipjar] %s", err) + // log.Errorf("[tipjar] %s", err.Error()) return } inlineTipjar := fn.(*InlineTipjar) @@ -276,7 +276,7 @@ func (bot *TipBot) acceptInlineTipjarHandler(ctx context.Context, c *tb.Callback success, err := t.Send() if !success { bot.trySendMessage(from.Telegram, Translate(ctx, "sendErrorMessage")) - errMsg := fmt.Sprintf("[tipjar] Transaction failed: %s", err) + errMsg := fmt.Sprintf("[tipjar] Transaction failed: %s", err.Error()) log.Errorln(errMsg) return } @@ -337,7 +337,7 @@ func (bot *TipBot) cancelInlineTipjarHandler(ctx context.Context, c *tb.Callback defer mutex.UnlockWithContext(ctx, tx.ID) fn, err := tx.Get(tx, bot.Bunt) if err != nil { - log.Errorf("[cancelInlineTipjarHandler] %s", err) + log.Errorf("[cancelInlineTipjarHandler] %s", err.Error()) return } inlineTipjar := fn.(*InlineTipjar) diff --git a/internal/telegram/invoice.go b/internal/telegram/invoice.go index 3d464b2..30b5d55 100644 --- a/internal/telegram/invoice.go +++ b/internal/telegram/invoice.go @@ -104,7 +104,7 @@ func (bot *TipBot) invoiceHandler(ctx context.Context, m *tb.Message) { log.Infof("[/invoice] Creating invoice for %s of %d sat.", userStr, amount) invoice, err := bot.createInvoiceWithEvent(ctx, user, amount, memo, InvoiceCallbackGeneric, "") if err != nil { - errmsg := fmt.Sprintf("[/invoice] Could not create an invoice: %s", err) + errmsg := fmt.Sprintf("[/invoice] Could not create an invoice: %s", err.Error()) bot.tryEditMessage(creatingMsg, Translate(ctx, "errorTryLaterMessage")) log.Errorln(errmsg) return @@ -113,7 +113,7 @@ func (bot *TipBot) invoiceHandler(ctx context.Context, m *tb.Message) { // create qr code qr, err := qrcode.Encode(invoice.PaymentRequest, qrcode.Medium, 256) if err != nil { - errmsg := fmt.Sprintf("[/invoice] Failed to create QR code for invoice: %s", err) + errmsg := fmt.Sprintf("[/invoice] Failed to create QR code for invoice: %s", err.Error()) bot.tryEditMessage(creatingMsg, Translate(ctx, "errorTryLaterMessage")) log.Errorln(errmsg) return @@ -135,7 +135,7 @@ func (bot *TipBot) createInvoiceWithEvent(ctx context.Context, user *lnbits.User Webhook: internal.Configuration.Lnbits.WebhookServer}, bot.Client) if err != nil { - errmsg := fmt.Sprintf("[/invoice] Could not create an invoice: %s", err) + errmsg := fmt.Sprintf("[/invoice] Could not create an invoice: %s", err.Error()) log.Errorln(errmsg) return InvoiceEvent{}, err } diff --git a/internal/telegram/link.go b/internal/telegram/link.go index d7dcd07..118e81e 100644 --- a/internal/telegram/link.go +++ b/internal/telegram/link.go @@ -40,7 +40,7 @@ func (bot *TipBot) lndhubHandler(ctx context.Context, m *tb.Message) { // create qr code qr, err := qrcode.Encode(lndhubUrl, qrcode.Medium, 256) if err != nil { - errmsg := fmt.Sprintf("[/invoice] Failed to create QR code for invoice: %s", err) + errmsg := fmt.Sprintf("[/invoice] Failed to create QR code for invoice: %s", err.Error()) log.Errorln(errmsg) return } diff --git a/internal/telegram/lnurl-withdraw.go b/internal/telegram/lnurl-withdraw.go index 0531cf5..1ae78bf 100644 --- a/internal/telegram/lnurl-withdraw.go +++ b/internal/telegram/lnurl-withdraw.go @@ -246,7 +246,7 @@ func (bot *TipBot) confirmWithdrawHandler(ctx context.Context, c *tb.Callback) { Webhook: internal.Configuration.Lnbits.WebhookServer}, bot.Client) if err != nil { - errmsg := fmt.Sprintf("[lnurlWithdrawHandlerWithdraw] Could not create an invoice: %s", err) + errmsg := fmt.Sprintf("[lnurlWithdrawHandlerWithdraw] Could not create an invoice: %s", err.Error()) log.Errorln(errmsg) bot.editSingleButton(ctx, c.Message, lnurlWithdrawState.Message, i18n.Translate(lnurlWithdrawState.LanguageCode, "errorTryLaterMessage")) return diff --git a/internal/telegram/lnurl.go b/internal/telegram/lnurl.go index 7cde4d2..01491e9 100644 --- a/internal/telegram/lnurl.go +++ b/internal/telegram/lnurl.go @@ -72,7 +72,8 @@ func (bot *TipBot) lnurlHandler(ctx context.Context, m *tb.Message) { return } - // assume payment + // get rid of the URI prefix + lnurlSplit = strings.TrimPrefix(lnurlSplit, "lightning:") // HandleLNURL by fiatjaf/go-lnurl _, params, err := bot.HandleLNURL(lnurlSplit) if err != nil { @@ -140,14 +141,14 @@ func (bot TipBot) lnurlReceiveHandler(ctx context.Context, m *tb.Message) { fromUser := LoadUser(ctx) lnurlEncode, err := UserGetLNURL(fromUser) if err != nil { - errmsg := fmt.Sprintf("[userLnurlHandler] Failed to get LNURL: %s", err) + errmsg := fmt.Sprintf("[userLnurlHandler] Failed to get LNURL: %s", err.Error()) log.Errorln(errmsg) bot.Telegram.Send(m.Sender, Translate(ctx, "lnurlNoUsernameMessage")) } // create qr code qr, err := qrcode.Encode(lnurlEncode, qrcode.Medium, 256) if err != nil { - errmsg := fmt.Sprintf("[userLnurlHandler] Failed to create QR code for LNURL: %s", err) + errmsg := fmt.Sprintf("[userLnurlHandler] Failed to create QR code for LNURL: %s", err.Error()) log.Errorln(errmsg) return } diff --git a/internal/telegram/pay.go b/internal/telegram/pay.go index f1ead1e..3a26544 100644 --- a/internal/telegram/pay.go +++ b/internal/telegram/pay.go @@ -63,7 +63,7 @@ func (bot *TipBot) payHandler(ctx context.Context, m *tb.Message) { if err != nil { NewMessage(m, WithDuration(0, bot)) bot.trySendMessage(m.Sender, helpPayInvoiceUsage(ctx, Translate(ctx, "invalidInvoiceHelpMessage"))) - errmsg := fmt.Sprintf("[/pay] Error: Could not getArgumentFromCommand: %s", err) + errmsg := fmt.Sprintf("[/pay] Error: Could not getArgumentFromCommand: %s", err.Error()) log.Errorln(errmsg) return } @@ -75,7 +75,7 @@ func (bot *TipBot) payHandler(ctx context.Context, m *tb.Message) { bolt11, err := decodepay.Decodepay(paymentRequest) if err != nil { bot.trySendMessage(m.Sender, helpPayInvoiceUsage(ctx, Translate(ctx, "invalidInvoiceHelpMessage"))) - errmsg := fmt.Sprintf("[/pay] Error: Could not decode invoice: %s", err) + errmsg := fmt.Sprintf("[/pay] Error: Could not decode invoice: %s", err.Error()) log.Errorln(errmsg) return } @@ -92,7 +92,7 @@ func (bot *TipBot) payHandler(ctx context.Context, m *tb.Message) { balance, err := bot.GetUserBalance(user) if err != nil { NewMessage(m, WithDuration(0, bot)) - errmsg := fmt.Sprintf("[/pay] Error: Could not get user balance: %s", err) + errmsg := fmt.Sprintf("[/pay] Error: Could not get user balance: %s", err.Error()) log.Errorln(errmsg) bot.trySendMessage(m.Sender, Translate(ctx, "errorTryLaterMessage")) return @@ -154,7 +154,7 @@ func (bot *TipBot) confirmPayHandler(ctx context.Context, c *tb.Callback) { sn, err := tx.Get(tx, bot.Bunt) // immediatelly set intransaction to block duplicate calls if err != nil { - log.Errorf("[confirmPayHandler] %s", err) + log.Errorf("[confirmPayHandler] %s", err.Error()) return } payData := sn.(*PayData) diff --git a/internal/telegram/photo.go b/internal/telegram/photo.go index 155bcb6..6d34138 100644 --- a/internal/telegram/photo.go +++ b/internal/telegram/photo.go @@ -51,18 +51,18 @@ func (bot *TipBot) photoHandler(ctx context.Context, m *tb.Message) { // get file reader closer from Telegram api reader, err := bot.Telegram.GetFile(m.Photo.MediaFile()) if err != nil { - log.Errorf("[photoHandler] getfile error: %v\n", err) + log.Errorf("[photoHandler] getfile error: %v\n", err.Error()) return } // decode to jpeg image img, err := jpeg.Decode(reader) if err != nil { - log.Errorf("[photoHandler] image.Decode error: %v\n", err) + log.Errorf("[photoHandler] image.Decode error: %v\n", err.Error()) return } data, err := TryRecognizeQrCode(img) if err != nil { - log.Errorf("[photoHandler] tryRecognizeQrCodes error: %v\n", err) + log.Errorf("[photoHandler] tryRecognizeQrCodes error: %v\n", err.Error()) bot.trySendMessage(m.Sender, Translate(ctx, "photoQrNotRecognizedMessage")) return } diff --git a/internal/telegram/send.go b/internal/telegram/send.go index 70a14b5..973cff7 100644 --- a/internal/telegram/send.go +++ b/internal/telegram/send.go @@ -221,7 +221,7 @@ func (bot *TipBot) confirmSendHandler(ctx context.Context, c *tb.Callback) { defer mutex.UnlockWithContext(ctx, tx.ID) sn, err := tx.Get(tx, bot.Bunt) if err != nil { - log.Errorf("[acceptSendHandler] %s", err) + log.Errorf("[acceptSendHandler] %s", err.Error()) return } sendData := sn.(*SendData) @@ -269,7 +269,7 @@ func (bot *TipBot) confirmSendHandler(ctx context.Context, c *tb.Callback) { success, err := t.Send() if !success || err != nil { // bot.trySendMessage(c.Sender, sendErrorMessage) - errmsg := fmt.Sprintf("[/send] Error: Transaction failed. %s", err) + errmsg := fmt.Sprintf("[/send] Error: Transaction failed. %s", err.Error()) log.Errorln(errmsg) bot.tryEditMessage(c.Message, i18n.Translate(sendData.LanguageCode, "sendErrorMessage"), &tb.ReplyMarkup{}) return @@ -307,7 +307,7 @@ func (bot *TipBot) cancelSendHandler(ctx context.Context, c *tb.Callback) { defer mutex.UnlockWithContext(ctx, tx.ID) sn, err := tx.Get(tx, bot.Bunt) if err != nil { - log.Errorf("[acceptSendHandler] %s", err) + log.Errorf("[acceptSendHandler] %s", err.Error()) return } diff --git a/internal/telegram/shop.go b/internal/telegram/shop.go index b235564..5faa2e6 100644 --- a/internal/telegram/shop.go +++ b/internal/telegram/shop.go @@ -480,7 +480,7 @@ func (bot *TipBot) shopHandler(ctx context.Context, m *tb.Message) { var err error shop, err = bot.getShop(ctx, shopID) if err != nil { - log.Errorf("[shopHandler] %s", err) + log.Errorf("[shopHandler] %s", err.Error()) return } } @@ -511,7 +511,7 @@ func (bot *TipBot) shopNewItemHandler(ctx context.Context, c *tb.Callback) { user := LoadUser(ctx) shop, err := bot.getShop(ctx, c.Data) if err != nil { - log.Errorf("[shopNewItemHandler] %s", err) + log.Errorf("[shopNewItemHandler] %s", err.Error()) return } if shop.Owner.Telegram.ID != c.Sender.ID { @@ -537,7 +537,7 @@ func (bot *TipBot) shopNewItemHandler(ctx context.Context, c *tb.Callback) { func (bot *TipBot) addShopItem(ctx context.Context, shopId string) (*Shop, ShopItem, error) { shop, err := bot.getShop(ctx, shopId) if err != nil { - log.Errorf("[addShopItem] %s", err) + log.Errorf("[addShopItem] %s", err.Error()) return shop, ShopItem{}, err } user := LoadUser(ctx) @@ -626,7 +626,7 @@ func (bot *TipBot) shopItemAddItemHandler(ctx context.Context, c *tb.Callback) { shop, err := bot.getShop(ctx, shopView.ShopID) if err != nil { - log.Errorf("[shopNewItemHandler] %s", err) + log.Errorf("[shopNewItemHandler] %s", err.Error()) return } @@ -656,7 +656,7 @@ func (bot *TipBot) addItemFileHandler(ctx context.Context, m *tb.Message) { shop, err := bot.getShop(ctx, shopView.ShopID) if err != nil { - log.Errorf("[shopNewItemHandler] %s", err) + log.Errorf("[shopNewItemHandler] %s", err.Error()) return } @@ -746,7 +746,7 @@ func (bot *TipBot) shopGetItemFilesHandler(ctx context.Context, c *tb.Callback) } shop, err := bot.getShop(ctx, shopView.ShopID) if err != nil { - log.Errorf("[shopNewItemHandler] %s", err) + log.Errorf("[shopNewItemHandler] %s", err.Error()) return } itemID := c.Data @@ -784,7 +784,7 @@ func (bot *TipBot) shopConfirmBuyHandler(ctx context.Context, c *tb.Callback) { } shop, err := bot.getShop(ctx, shopView.ShopID) if err != nil { - log.Errorf("[shopConfirmBuyHandler] %s", err) + log.Errorf("[shopConfirmBuyHandler] %s", err.Error()) return } itemID := c.Data @@ -812,7 +812,7 @@ func (bot *TipBot) shopConfirmBuyHandler(ctx context.Context, c *tb.Callback) { success, err := t.Send() if !success || err != nil { // bot.trySendMessage(c.Sender, sendErrorMessage) - errmsg := fmt.Sprintf("[shop] Error: Transaction failed. %s", err) + errmsg := fmt.Sprintf("[shop] Error: Transaction failed. %s", err.Error()) log.Errorln(errmsg) bot.trySendMessage(user.Telegram, i18n.Translate(user.Telegram.LanguageCode, "sendErrorMessage"), &tb.ReplyMarkup{}) return @@ -841,7 +841,7 @@ func (bot *TipBot) shopSendItemFilesToUser(ctx context.Context, toUser *lnbits.U } shop, err := bot.getShop(ctx, shopView.ShopID) if err != nil { - log.Errorf("[shopNewItemHandler] %s", err) + log.Errorf("[shopNewItemHandler] %s", err.Error()) return } item := shop.Items[itemID] @@ -958,7 +958,7 @@ func (bot *TipBot) shopsHandler(ctx context.Context, m *tb.Message) { if err != nil && user.Telegram.ID == shopOwner.Telegram.ID { shops, err = bot.initUserShops(ctx, user) if err != nil { - log.Errorf("[shopsHandler] %s", err) + log.Errorf("[shopsHandler] %s", err.Error()) return } } @@ -973,7 +973,7 @@ func (bot *TipBot) shopsHandler(ctx context.Context, m *tb.Message) { for _, shopId := range shops.Shops { shop, err := bot.getShop(ctx, shopId) if err != nil { - log.Errorf("[shopsHandler] %s", err) + log.Errorf("[shopsHandler] %s", err.Error()) return } shopTitles += fmt.Sprintf("\n· %s (%d items)", str.MarkdownEscape(shop.Title), len(shop.Items)) @@ -1140,7 +1140,7 @@ func (bot *TipBot) shopsDescriptionHandler(ctx context.Context, c *tb.Callback) user := LoadUser(ctx) shops, err := bot.getUserShops(ctx, user) if err != nil { - log.Errorf("[shopsDescriptionHandler] %s", err) + log.Errorf("[shopsDescriptionHandler] %s", err.Error()) return } SetUserState(user, bot, lnbits.UserEnterShopsDescription, shops.ID) @@ -1152,7 +1152,7 @@ func (bot *TipBot) enterShopsDescriptionHandler(ctx context.Context, m *tb.Messa user := LoadUser(ctx) shops, err := bot.getUserShops(ctx, user) if err != nil { - log.Errorf("[enterShopsDescriptionHandler] %s", err) + log.Errorf("[enterShopsDescriptionHandler] %s", err.Error()) return } if shops.Owner.Telegram.ID != m.Sender.ID { @@ -1189,7 +1189,7 @@ func (bot *TipBot) shopsResetHandler(ctx context.Context, c *tb.Callback) { user := LoadUser(ctx) shops, err := bot.getUserShops(ctx, user) if err != nil { - log.Errorf("[shopsResetHandler] %s", err) + log.Errorf("[shopsResetHandler] %s", err.Error()) return } if shops.Owner.Telegram.ID != c.Sender.ID { @@ -1312,7 +1312,7 @@ func (bot *TipBot) shopNewShopHandler(ctx context.Context, c *tb.Callback) { user := LoadUser(ctx) shops, err := bot.getUserShops(ctx, user) if err != nil { - log.Errorf("[shopNewShopHandler] %s", err) + log.Errorf("[shopNewShopHandler] %s", err.Error()) return } if len(shops.Shops) >= shops.MaxShops { diff --git a/internal/telegram/shop_helpers.go b/internal/telegram/shop_helpers.go index 891c2e2..cdf112c 100644 --- a/internal/telegram/shop_helpers.go +++ b/internal/telegram/shop_helpers.go @@ -285,7 +285,7 @@ func (bot *TipBot) getShop(ctx context.Context, shopId string) (*Shop, error) { // immediatelly set intransaction to block duplicate calls sn, err := tx.Get(tx, bot.ShopBunt) if err != nil { - log.Errorf("[getShop] %s", err) + log.Errorf("[getShop] %s", err.Error()) return &Shop{}, err } shop := sn.(*Shop) diff --git a/internal/telegram/start.go b/internal/telegram/start.go index 5c109fa..c15555a 100644 --- a/internal/telegram/start.go +++ b/internal/telegram/start.go @@ -85,7 +85,7 @@ func (bot TipBot) createWallet(user *lnbits.User) error { internal.Configuration.Lnbits.AdminId, UserStr) if err != nil { - errormsg := fmt.Sprintf("[createWallet] Create wallet error: %s", err) + errormsg := fmt.Sprintf("[createWallet] Create wallet error: %s", err.Error()) log.Errorln(errormsg) return err } @@ -94,7 +94,7 @@ func (bot TipBot) createWallet(user *lnbits.User) error { user.Name = u.Name wallet, err := bot.Client.Wallets(*user) if err != nil { - errormsg := fmt.Sprintf("[createWallet] Get wallet error: %s", err) + errormsg := fmt.Sprintf("[createWallet] Get wallet error: %s", err.Error()) log.Errorln(errormsg) return err } @@ -104,7 +104,7 @@ func (bot TipBot) createWallet(user *lnbits.User) error { user.CreatedAt = time.Now() err = UpdateUserRecord(user, bot) if err != nil { - errormsg := fmt.Sprintf("[createWallet] Update user record error: %s", err) + errormsg := fmt.Sprintf("[createWallet] Update user record error: %s", err.Error()) log.Errorln(errormsg) return err } diff --git a/internal/telegram/tip.go b/internal/telegram/tip.go index 1038344..070c443 100644 --- a/internal/telegram/tip.go +++ b/internal/telegram/tip.go @@ -110,7 +110,7 @@ func (bot *TipBot) tipHandler(ctx context.Context, m *tb.Message) { if !success { NewMessage(m, WithDuration(0, bot)) bot.trySendMessage(m.Sender, fmt.Sprintf("%s %s", Translate(ctx, "tipErrorMessage"), err)) - errMsg := fmt.Sprintf("[/tip] Transaction failed: %s", err) + errMsg := fmt.Sprintf("[/tip] Transaction failed: %s", err.Error()) log.Warnln(errMsg) return } diff --git a/pkg/lightning/lightning.go b/pkg/lightning/lightning.go index 2858c7f..51ee95f 100644 --- a/pkg/lightning/lightning.go +++ b/pkg/lightning/lightning.go @@ -21,7 +21,7 @@ func IsInvoice(message string) bool { func IsLnurl(message string) bool { message = strings.ToLower(message) - if strings.HasPrefix(message, "lnurl") { + if strings.HasPrefix(message, "lnurl") || strings.HasPrefix(message, "lightning:lnurl") { // string must be a single word if !strings.Contains(message, " ") { return true