mirror of
https://github.com/yincongcyincong/wechat_chatter.git
synced 2026-07-15 10:26:52 +08:00
support audio
This commit is contained in:
+4
-10
@@ -86,21 +86,15 @@ func SendHttpReq(msg map[string]interface{}) {
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("发送数据: %s\n", string(jsonData))
|
||||
m := new(WechatMessage)
|
||||
err = json.Unmarshal(jsonData, m)
|
||||
jsonReq, err := HandleMsg(jsonData, m)
|
||||
if err != nil {
|
||||
log.Printf("解析消息失败: %v\n", err)
|
||||
log.Printf("JSON 序列化失败: %v\n", err)
|
||||
return
|
||||
}
|
||||
myWechatId = m.SelfID
|
||||
|
||||
if m.GroupId != "" {
|
||||
userID2NicknameMap.Store(m.GroupId+"_"+m.UserID, m.Sender.Nickname)
|
||||
}
|
||||
|
||||
// 4. 创建 POST 请求
|
||||
req, err := http.NewRequest("POST", config.SendURL, bytes.NewBuffer(jsonData))
|
||||
fmt.Printf("发送数据: %s\n", string(jsonReq))
|
||||
req, err := http.NewRequest("POST", config.SendURL, bytes.NewBuffer(jsonReq))
|
||||
if err != nil {
|
||||
log.Printf("创建请求失败: %v\n", err)
|
||||
return
|
||||
|
||||
+33
-1
@@ -5,8 +5,10 @@ import (
|
||||
"crypto/md5"
|
||||
"encoding/base64"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
log "log"
|
||||
"math/rand"
|
||||
"os"
|
||||
"os/exec"
|
||||
@@ -105,11 +107,16 @@ func SaveAudioFile(silkBytes []byte) (path string, err error) {
|
||||
return "", err
|
||||
}
|
||||
|
||||
exePath, err := os.Executable()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
randomNumber := r.Intn(1000)
|
||||
timestamp := time.Now().Unix()
|
||||
fileName := fmt.Sprintf("%d_%d.mp3", randomNumber, timestamp)
|
||||
targetPath := "./audio/" + fileName
|
||||
targetPath := filepath.Dir(exePath) + "/audio/" + fileName
|
||||
err = os.WriteFile(targetPath, mp3Bytes, 0644)
|
||||
if err != nil {
|
||||
return "", err
|
||||
@@ -147,3 +154,28 @@ func SilkToMp3(silkBytes []byte) ([]byte, error) {
|
||||
|
||||
return out.Bytes(), nil
|
||||
}
|
||||
|
||||
func HandleMsg(jsonData []byte, m *WechatMessage) ([]byte, error) {
|
||||
err := json.Unmarshal(jsonData, m)
|
||||
if err != nil {
|
||||
log.Printf("解析消息失败: %v\n", err)
|
||||
return nil, err
|
||||
}
|
||||
myWechatId = m.SelfID
|
||||
if m.GroupId != "" {
|
||||
userID2NicknameMap.Store(m.GroupId+"_"+m.UserID, m.Sender.Nickname)
|
||||
}
|
||||
|
||||
for _, msg := range m.Message {
|
||||
if msg.Type == "record" {
|
||||
path, err := SaveAudioFile(msg.Data.Media)
|
||||
if err != nil {
|
||||
log.Printf("保存音频失败: %v\n", err)
|
||||
return nil, err
|
||||
}
|
||||
msg.Data.URL = path
|
||||
msg.Data.Media = nil
|
||||
}
|
||||
}
|
||||
return json.Marshal(m)
|
||||
}
|
||||
|
||||
+2
-24
@@ -96,36 +96,14 @@ func SendWebSocketMsg(msg map[string]interface{}) {
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("发送数据: %s\n", string(jsonData))
|
||||
m := new(WechatMessage)
|
||||
err = json.Unmarshal(jsonData, m)
|
||||
if err != nil {
|
||||
log.Printf("解析消息失败: %v\n", err)
|
||||
return
|
||||
}
|
||||
myWechatId = m.SelfID
|
||||
if m.GroupId != "" {
|
||||
userID2NicknameMap.Store(m.GroupId+"_"+m.UserID, m.Sender.Nickname)
|
||||
}
|
||||
|
||||
for _, msg := range m.Message {
|
||||
if msg.Type == "record" {
|
||||
path, err := SaveAudioFile(msg.Data.Media)
|
||||
if err != nil {
|
||||
log.Printf("保存音频失败: %v\n", err)
|
||||
return
|
||||
}
|
||||
msg.Data.URL = path
|
||||
msg.Data.Media = nil
|
||||
}
|
||||
}
|
||||
|
||||
jsonReq, err := json.Marshal(m)
|
||||
jsonReq, err := HandleMsg(jsonData, m)
|
||||
if err != nil {
|
||||
log.Printf("JSON 序列化失败: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("发送数据: %s\n", string(jsonReq))
|
||||
err = conn.WriteMessage(websocket.TextMessage, jsonReq)
|
||||
if err != nil {
|
||||
log.Printf("发送消息失败: %v\n", err)
|
||||
|
||||
Reference in New Issue
Block a user