Address PR #15 review: batch API calls and admin-guard /refresh
1. Add GetAllPremiumIndex() to fetch all futures data in one call, used by GetTopPrices instead of per-symbol sequential calls. 2. Add ADMIN_CHAT_ID env check to /refresh command to restrict access to authorized users only. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -13,15 +13,19 @@ func GetTopPrices() ([]string, []float64, []float64) {
|
||||
topPrice := make([]float64, n)
|
||||
topRate := make([]float64, n)
|
||||
|
||||
all, err := data.Market.GetAllPremiumIndex()
|
||||
if err != nil {
|
||||
return topSym, topPrice, topRate
|
||||
}
|
||||
|
||||
for i, sym := range strategy.TopPriceSymbols {
|
||||
price, rate, _, ok := data.Market.GetFuturePrice(sym)
|
||||
p, ok := all[sym]
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
topSym[i] = sym
|
||||
topPrice[i] = price
|
||||
topRate[i] = rate
|
||||
|
||||
topPrice[i] = p.MarkPrice
|
||||
topRate[i] = p.FundingRate
|
||||
}
|
||||
return topSym, topPrice, topRate
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package commands
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
"gopkg.in/telebot.v3"
|
||||
"me.thuanle/bbot/internal/configs/key"
|
||||
"me.thuanle/bbot/internal/data"
|
||||
"me.thuanle/bbot/internal/services/controllers"
|
||||
"me.thuanle/bbot/internal/services/tele/chat"
|
||||
@@ -19,6 +23,10 @@ func OnGetTopFundingFee(context telebot.Context) error {
|
||||
}
|
||||
|
||||
func OnRefreshPairCache(context telebot.Context) error {
|
||||
adminID, _ := strconv.ParseInt(os.Getenv(key.AdminChatID), 10, 64)
|
||||
if adminID != 0 && context.Sender().ID != adminID {
|
||||
return nil
|
||||
}
|
||||
data.Market.RefreshTradingPairCache()
|
||||
return chat.ReplyMessage(context, "Trading pair cache refreshed")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user