diff --git a/internal/lnurl/lnurl.go b/internal/lnurl/lnurl.go index 42a2510..2701a6c 100644 --- a/internal/lnurl/lnurl.go +++ b/internal/lnurl/lnurl.go @@ -81,11 +81,13 @@ func (w Lnurl) Handle(writer http.ResponseWriter, request *http.Request) { api.NotFoundHandler(writer, fmt.Errorf("[handleLnUrl] Form value 'amount' is not set")) return } - amount, parseError := strconv.Atoi(stringAmount) - if parseError != nil { - api.NotFoundHandler(writer, fmt.Errorf("[handleLnUrl] Couldn't cast amount to int %v", parseError)) + amount, err := telegram.GetAmount(stringAmount) + if err != nil { + api.NotFoundHandler(writer, fmt.Errorf("[handleLnUrl] Couldn't cast amount to int: %v", err)) return } + amount = amount * 1000 // msat + comment := request.FormValue("comment") if len(comment) > CommentAllowed { api.NotFoundHandler(writer, fmt.Errorf("[handleLnUrl] Comment is too long")) @@ -95,7 +97,7 @@ func (w Lnurl) Handle(writer http.ResponseWriter, request *http.Request) { // payer data payerdata := request.FormValue("payerdata") var payerData lnurl.PayerDataValues - err := json.Unmarshal([]byte(payerdata), &payerData) + err = json.Unmarshal([]byte(payerdata), &payerData) if err != nil { // api.NotFoundHandler(writer, fmt.Errorf("[handleLnUrl] Couldn't parse payerdata: %v", err)) fmt.Errorf("[handleLnUrl] Couldn't parse payerdata: %v", err) diff --git a/internal/telegram/amounts.go b/internal/telegram/amounts.go index b1ad7ce..0ecc3e2 100644 --- a/internal/telegram/amounts.go +++ b/internal/telegram/amounts.go @@ -35,11 +35,11 @@ func decodeAmountFromCommand(input string) (amount int64, err error) { // log.Errorln(errmsg) return 0, fmt.Errorf(errmsg) } - amount, err = getAmount(strings.Split(input, " ")[1]) + amount, err = GetAmount(strings.Split(input, " ")[1]) return amount, err } -func getAmount(input string) (amount int64, err error) { +func GetAmount(input string) (amount int64, err error) { // convert something like 1.2k into 1200 if strings.HasSuffix(strings.ToLower(input), "k") { fmount, err := strconv.ParseFloat(strings.TrimSpace(input[:len(input)-1]), 64) @@ -141,7 +141,7 @@ func (bot *TipBot) enterAmountHandler(ctx intercept.Context) (intercept.Context, return ctx, err } - amount, err := getAmount(ctx.Message().Text) + amount, err := GetAmount(ctx.Message().Text) if err != nil { log.Warnf("[enterAmountHandler] %s", err.Error()) bot.trySendMessage(ctx.Message().Sender, Translate(ctx, "lnurlInvalidAmountMessage")) diff --git a/internal/telegram/faucet.go b/internal/telegram/faucet.go index 30a0551..17cfb8c 100644 --- a/internal/telegram/faucet.go +++ b/internal/telegram/faucet.go @@ -62,7 +62,7 @@ func (bot TipBot) createFaucet(ctx context.Context, text string, sender *tb.User if err != nil { return nil, errors.New(errors.DecodePerUserAmountError, err) } - perUserAmount, err := getAmount(peruserStr) + perUserAmount, err := GetAmount(peruserStr) if err != nil { return nil, errors.New(errors.InvalidAmountError, err) } diff --git a/internal/telegram/groups.go b/internal/telegram/groups.go index 0bae47e..1e6d682 100644 --- a/internal/telegram/groups.go +++ b/internal/telegram/groups.go @@ -412,7 +412,7 @@ func (bot TipBot) addGroupHandler(ctx intercept.Context) (intercept.Context, err amount := int64(0) // default amount is zero if amount_str, err := getArgumentFromCommand(m.Text, 3); err == nil { - amount, err = getAmount(amount_str) + amount, err = GetAmount(amount_str) if err != nil { bot.trySendMessage(m.Sender, Translate(ctx, "lnurlInvalidAmountMessage")) return ctx, err diff --git a/internal/telegram/satdress.go b/internal/telegram/satdress.go index 9efb106..707b90e 100644 --- a/internal/telegram/satdress.go +++ b/internal/telegram/satdress.go @@ -250,7 +250,7 @@ func (bot *TipBot) invHandler(ctx intercept.Context) (intercept.Context, error) var amount int64 if amount_str, err := getArgumentFromCommand(m.Text, 2); err == nil { - amount, err = getAmount(amount_str) + amount, err = GetAmount(amount_str) if err != nil { return ctx, err } @@ -424,7 +424,7 @@ func (bot *TipBot) satdressProxyHandler(ctx intercept.Context) (intercept.Contex var amount int64 if amount_str, err := getArgumentFromCommand(m.Text, 2); err == nil { - amount, err = getAmount(amount_str) + amount, err = GetAmount(amount_str) if err != nil { return ctx, err } diff --git a/internal/telegram/shop.go b/internal/telegram/shop.go index a65279b..8a759c6 100644 --- a/internal/telegram/shop.go +++ b/internal/telegram/shop.go @@ -166,7 +166,7 @@ func (bot *TipBot) enterShopItemPriceHandler(ctx intercept.Context) (intercept.C if m.Text == "0" { amount = 0 } else { - amount, err = getAmount(m.Text) + amount, err = GetAmount(m.Text) if err != nil { log.Warnf("[enterShopItemPriceHandler] %s", err.Error()) bot.trySendMessage(m.Sender, Translate(ctx, "lnurlInvalidAmountMessage")) diff --git a/internal/telegram/tipjar.go b/internal/telegram/tipjar.go index 951c7d6..0fda857 100644 --- a/internal/telegram/tipjar.go +++ b/internal/telegram/tipjar.go @@ -58,7 +58,7 @@ func (bot TipBot) createTipjar(ctx context.Context, text string, sender *tb.User if err != nil { return nil, errors.New(errors.DecodePerUserAmountError, err) } - perUserAmount, err := getAmount(peruserStr) + perUserAmount, err := GetAmount(peruserStr) if err != nil { return nil, errors.New(errors.InvalidAmountError, err) }