From 2af6b41866091c0eb2fdb1abb70115ccfadef0bf Mon Sep 17 00:00:00 2001 From: wood chen Date: Fri, 20 Sep 2024 16:11:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=81=E5=AF=B9=E4=BB=B7=E6=A0=BC=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E8=A7=A6=E5=8F=91=E5=99=A8=E6=94=B9=E4=B8=BA=E5=AE=8C?= =?UTF-8?q?=E5=85=A8=E5=8C=B9=E9=85=8D,=20=E4=B8=8D=E5=8C=BA=E5=88=86?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- service/binance/symbols.go | 14 +++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d19e411..bbf6959 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,8 @@ ### 虚拟币价格实时获取 - 从币安获取所有交易对, 缓存到内存里, 每小时刷新一次 -- 当群消息触及关键词时, 会返回对应虚拟币/USDT的价格 +- 当群消息为虚拟币名称时, 会返回对应虚拟币/USDT的价格 + - 例如,如果用户发送 "BTC"、"btc" 或 "Btc",都会触发比特币的价格信息发送,但发送 "What's the price of BTC?" 则不会触发。 ### 链接拦截 - 新增: 当非管理员时, 才会进行链接拦截 diff --git a/service/binance/symbols.go b/service/binance/symbols.go index bfe2588..f9a3b0c 100644 --- a/service/binance/symbols.go +++ b/service/binance/symbols.go @@ -61,10 +61,14 @@ func StartSymbolRefresh(interval time.Duration) { // HandleSymbolQuery 处理虚拟币名查询 func HandleSymbolQuery(bot *tgbotapi.BotAPI, message *tgbotapi.Message) { symbols := GetAllSymbols() - upperMsg := strings.ToUpper(message.Text) + msg := strings.TrimSpace(message.Text) for _, symbol := range symbols { - if strings.Contains(upperMsg, strings.TrimSuffix(symbol, "USDT")) { + // 移除USDT后缀 + coinName := strings.TrimSuffix(symbol, "USDT") + + // 不区分大小写的完全匹配检查 + if strings.EqualFold(msg, coinName) { info, err := getTickerInfo(symbol) if err != nil { log.Printf("Error getting ticker info for %s: %v", symbol, err) @@ -74,9 +78,9 @@ func HandleSymbolQuery(bot *tgbotapi.BotAPI, message *tgbotapi.Message) { info.symbol, info.last, formatChange(info.changePercent)) - msg := tgbotapi.NewMessage(message.Chat.ID, replyMessage) - msg.ParseMode = "Markdown" - bot.Send(msg) + replyMsg := tgbotapi.NewMessage(message.Chat.ID, replyMessage) + replyMsg.ParseMode = "Markdown" + bot.Send(replyMsg) return } }