Files
wechat_chatter/onebot/msg.go
T
2026-06-01 17:11:46 +08:00

50 lines
1.3 KiB
Go

package main
import (
"encoding/json"
"time"
)
func cleanExpiredDownloads() {
ticker := time.NewTicker(1 * time.Hour)
for range ticker.C {
now := time.Now().UnixMilli()
userID2FileMsgMap.Range(func(key, value any) bool {
req := value.(*DownloadRequest)
if now-req.LastAppendTime > 24*60*60*1000 {
userID2FileMsgMap.Delete(key)
}
return true
})
}
}
func Download(rawMsg []byte) error {
downloadReq := new(DownloadRequest)
err := json.Unmarshal(rawMsg, downloadReq)
if err != nil {
Error("JSON解析失败", "err", err)
return err
}
Info("下载文件", "file_id", downloadReq.FileID, "media_len", len(downloadReq.Media), "cdn_url", downloadReq.CDNURL)
if downloadReqInter, ok := userID2FileMsgMap.Load(downloadReq.CDNURL); ok {
beforeDownloadReq := downloadReqInter.(*DownloadRequest)
if beforeDownloadReq.FilePath != "" {
return nil
}
if time.Now().UnixMilli()-beforeDownloadReq.LastAppendTime > 10000000 {
beforeDownloadReq.Media = downloadReq.Media
} else {
beforeDownloadReq.Media = append(beforeDownloadReq.Media, downloadReq.Media...)
}
beforeDownloadReq.LastAppendTime = time.Now().UnixMilli()
} else {
downloadReq.LastAppendTime = time.Now().UnixMilli()
userID2FileMsgMap.Store(downloadReq.CDNURL, downloadReq)
}
return nil
}