币对价格消息触发器改为完全匹配, 不区分大小写

This commit is contained in:
wood chen 2024-09-20 16:11:53 +08:00
parent 5f63a202b4
commit 2af6b41866
2 changed files with 11 additions and 6 deletions

View File

@ -22,7 +22,8 @@
### 虚拟币价格实时获取 ### 虚拟币价格实时获取
- 从币安获取所有交易对, 缓存到内存里, 每小时刷新一次 - 从币安获取所有交易对, 缓存到内存里, 每小时刷新一次
- 当群消息触及关键词时, 会返回对应虚拟币/USDT的价格 - 当群消息为虚拟币名称时, 会返回对应虚拟币/USDT的价格
- 例如,如果用户发送 "BTC"、"btc" 或 "Btc",都会触发比特币的价格信息发送,但发送 "What's the price of BTC?" 则不会触发。
### 链接拦截 ### 链接拦截
- 新增: 当非管理员时, 才会进行链接拦截 - 新增: 当非管理员时, 才会进行链接拦截

View File

@ -61,10 +61,14 @@ func StartSymbolRefresh(interval time.Duration) {
// HandleSymbolQuery 处理虚拟币名查询 // HandleSymbolQuery 处理虚拟币名查询
func HandleSymbolQuery(bot *tgbotapi.BotAPI, message *tgbotapi.Message) { func HandleSymbolQuery(bot *tgbotapi.BotAPI, message *tgbotapi.Message) {
symbols := GetAllSymbols() symbols := GetAllSymbols()
upperMsg := strings.ToUpper(message.Text) msg := strings.TrimSpace(message.Text)
for _, symbol := range symbols { 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) info, err := getTickerInfo(symbol)
if err != nil { if err != nil {
log.Printf("Error getting ticker info for %s: %v", symbol, err) 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.symbol,
info.last, info.last,
formatChange(info.changePercent)) formatChange(info.changePercent))
msg := tgbotapi.NewMessage(message.Chat.ID, replyMessage) replyMsg := tgbotapi.NewMessage(message.Chat.ID, replyMessage)
msg.ParseMode = "Markdown" replyMsg.ParseMode = "Markdown"
bot.Send(msg) bot.Send(replyMsg)
return return
} }
} }