package commands import ( "golang.org/x/text/language" "golang.org/x/text/message" "gopkg.in/telebot.v3" "me.thuanle/bbot/internal/configs/tele" "me.thuanle/bbot/internal/data" "me.thuanle/bbot/internal/helper/binancex" "me.thuanle/bbot/internal/services/tele/chat" "me.thuanle/bbot/internal/services/tele/view" "strings" ) var lastEthPrice float64 func showStickerMode(context telebot.Context, token string) { token = strings.ToUpper(token) stickerIdx, ok := tele.Token2StickerIdxMap[token] if !ok { return } stickers, err := context.Bot().StickerSet(tele.StickerSet) if err == nil && stickers != nil { _ = context.Reply(&stickers.Stickers[stickerIdx]) } } func OnTokenInfoByToken(context telebot.Context, token string) error { symbols := binancex.Token2Symbols(token) if len(symbols) == 0 { return nil } showStickerMode(context, token) fp, fundRate, fundTime, ok := data.Market.GetFuturePrice(symbols[0]) marginRates := data.Market.GetMarginInterestRates() tokenInterestRate := marginRates[strings.ToUpper(token)] if !ok { return nil } sSymbol := binancex.Future2SpotSymbol(symbols[0]) sp, _ := data.Market.GetSpotPrice(sSymbol) _ = chat.ReplyMessage(context, view.RenderOnPriceMessage(symbols[0], sp, fp, fundRate, fundTime, tokenInterestRate)) if strings.ToUpper(token) == "ETH" { mFmt := message.NewPrinter(language.AmericanEnglish) baseAmount := 35. basePrice := 2500.0 baseTotal := baseAmount * basePrice curTotal := baseAmount * sp lastDelta := "" if lastEthPrice == 0 { lastEthPrice = sp } else { lastDelta = mFmt.Sprintf( "Ξ” price: $%+.0f\n"+ "Ξ” Usdt: $%+.0f\n", sp-lastEthPrice, (sp-lastEthPrice)*baseAmount, ) lastEthPrice = sp } msg := mFmt.Sprintf( "πŸŽ‰πŸŽŠπŸŽŠπŸ¦ˆπŸ¦ˆπŸ¦ˆ @th13vn πŸ¦ˆπŸ¦ˆπŸ¦ˆπŸŽŠπŸŽŠπŸŽ‰\n"+ "βˆ‘ USDT: $%.0f\n"+ "Lợi nhuαΊ­n: $%.0f\n"+ "%s\n"+ "πŸš€πŸš€πŸš€πŸš€πŸš€ Road to 5k πŸš€πŸš€πŸš€πŸš€πŸš€: \n"+ "- Ξ” Price: $0.0f\n"+ "- Ξ” Vol: $0.0f\n", curTotal, curTotal-baseTotal, lastDelta, 5000-sp, 5000*baseAmount-curTotal, ) _ = chat.ReplyMessage(context, msg) } return nil } func OnTokenInfo(context telebot.Context) error { text := strings.ToLower(context.Text()) return OnTokenInfoByToken(context, text) }