Skip to content

Commit

Permalink
Beta431 (#430)
Browse files Browse the repository at this point in the history
* beta430

* beta431
  • Loading branch information
Hoshinonyaruko committed Jun 15, 2024
1 parent f2a140c commit d57b61a
Showing 1 changed file with 66 additions and 58 deletions.
124 changes: 66 additions & 58 deletions handlers/message_parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -451,41 +451,45 @@ func parseMessageContent(paramsMessage callapi.ParamsContent, message callapi.Ac
qqNumber, _ := segmentMap["data"].(map[string]interface{})["qq"].(string)
segmentContent = "[CQ:at,qq=" + qqNumber + "]"
case "markdown":
mdContent := segmentMap["data"]
if mdContentMap, isMap := mdContent.(map[string]interface{}); isMap {
// mdContent是map[string]interface{},按map处理
mdContentBytes, err := json.Marshal(mdContentMap)
if err != nil {
mylog.Printf("Error marshaling mdContentMap to JSON:%v", err)
}
encoded := base64.StdEncoding.EncodeToString(mdContentBytes)
segmentContent = "[CQ:markdown,data=base64://" + encoded + "]"
} else if mdContentStr, isString := mdContent.(string); isString {
// mdContent是string
if strings.HasPrefix(mdContentStr, "base64://") {
// 如果以base64://开头,直接使用
segmentContent = "[CQ:markdown,data=" + mdContentStr + "]"
} else {
// 处理实体化后的JSON文本
mdContentStr = strings.ReplaceAll(mdContentStr, "&", "&")
mdContentStr = strings.ReplaceAll(mdContentStr, "[", "[")
mdContentStr = strings.ReplaceAll(mdContentStr, "]", "]")
mdContentStr = strings.ReplaceAll(mdContentStr, ",", ",")

// 将处理过的字符串视为JSON对象,进行序列化和编码
var jsonMap map[string]interface{}
if err := json.Unmarshal([]byte(mdContentStr), &jsonMap); err != nil {
mylog.Printf("Error unmarshaling string to JSON:%v", err)
}
mdContentBytes, err := json.Marshal(jsonMap)
mdContent, ok := segmentMap["data"].(map[string]interface{})["data"]
if ok {
if mdContentMap, isMap := mdContent.(map[string]interface{}); isMap {
// mdContent是map[string]interface{},按map处理
mdContentBytes, err := json.Marshal(mdContentMap)
if err != nil {
mylog.Printf("Error marshaling jsonMap to JSON:%v", err)
mylog.Printf("Error marshaling mdContentMap to JSON:%v", err)
}
encoded := base64.StdEncoding.EncodeToString(mdContentBytes)
segmentContent = "[CQ:markdown,data=base64://" + encoded + "]"
} else if mdContentStr, isString := mdContent.(string); isString {
// mdContent是string
if strings.HasPrefix(mdContentStr, "base64://") {
// 如果以base64://开头,直接使用
segmentContent = "[CQ:markdown,data=" + mdContentStr + "]"
} else {
// 处理实体化后的JSON文本
mdContentStr = strings.ReplaceAll(mdContentStr, "&", "&")
mdContentStr = strings.ReplaceAll(mdContentStr, "[", "[")
mdContentStr = strings.ReplaceAll(mdContentStr, "]", "]")
mdContentStr = strings.ReplaceAll(mdContentStr, ",", ",")

// 将处理过的字符串视为JSON对象,进行序列化和编码
var jsonMap map[string]interface{}
if err := json.Unmarshal([]byte(mdContentStr), &jsonMap); err != nil {
mylog.Printf("Error unmarshaling string to JSON:%v", err)
}
mdContentBytes, err := json.Marshal(jsonMap)
if err != nil {
mylog.Printf("Error marshaling jsonMap to JSON:%v", err)
}
encoded := base64.StdEncoding.EncodeToString(mdContentBytes)
segmentContent = "[CQ:markdown,data=base64://" + encoded + "]"
}
} else {
mylog.Printf("Error marshaling markdown segment wrong type.")
}
} else {
mylog.Printf("Error marshaling markdown segment wrong type.")
mylog.Printf("Error marshaling markdown segment to interface,contain type but data is nil.")
}
}

Expand Down Expand Up @@ -515,41 +519,45 @@ func parseMessageContent(paramsMessage callapi.ParamsContent, message callapi.Ac
qqNumber, _ := message["data"].(map[string]interface{})["qq"].(string)
messageText = "[CQ:at,qq=" + qqNumber + "]"
case "markdown":
mdContent := message["data"]
if mdContentMap, isMap := mdContent.(map[string]interface{}); isMap {
// mdContent是map[string]interface{},按map处理
mdContentBytes, err := json.Marshal(mdContentMap)
if err != nil {
mylog.Printf("Error marshaling mdContentMap to JSON:%v", err)
}
encoded := base64.StdEncoding.EncodeToString(mdContentBytes)
messageText = "[CQ:markdown,data=base64://" + encoded + "]"
} else if mdContentStr, isString := mdContent.(string); isString {
// mdContent是string
if strings.HasPrefix(mdContentStr, "base64://") {
// 如果以base64://开头,直接使用
messageText = "[CQ:markdown,data=" + mdContentStr + "]"
} else {
// 处理实体化后的JSON文本
mdContentStr = strings.ReplaceAll(mdContentStr, "&", "&")
mdContentStr = strings.ReplaceAll(mdContentStr, "[", "[")
mdContentStr = strings.ReplaceAll(mdContentStr, "]", "]")
mdContentStr = strings.ReplaceAll(mdContentStr, ",", ",")

// 将处理过的字符串视为JSON对象,进行序列化和编码
var jsonMap map[string]interface{}
if err := json.Unmarshal([]byte(mdContentStr), &jsonMap); err != nil {
mylog.Printf("Error unmarshaling string to JSON:%v", err)
}
mdContentBytes, err := json.Marshal(jsonMap)
mdContent, ok := message["data"].(map[string]interface{})["data"]
if ok {
if mdContentMap, isMap := mdContent.(map[string]interface{}); isMap {
// mdContent是map[string]interface{},按map处理
mdContentBytes, err := json.Marshal(mdContentMap)
if err != nil {
mylog.Printf("Error marshaling jsonMap to JSON:%v", err)
mylog.Printf("Error marshaling mdContentMap to JSON:%v", err)
}
encoded := base64.StdEncoding.EncodeToString(mdContentBytes)
messageText = "[CQ:markdown,data=base64://" + encoded + "]"
} else if mdContentStr, isString := mdContent.(string); isString {
// mdContent是string
if strings.HasPrefix(mdContentStr, "base64://") {
// 如果以base64://开头,直接使用
messageText = "[CQ:markdown,data=" + mdContentStr + "]"
} else {
// 处理实体化后的JSON文本
mdContentStr = strings.ReplaceAll(mdContentStr, "&", "&")
mdContentStr = strings.ReplaceAll(mdContentStr, "[", "[")
mdContentStr = strings.ReplaceAll(mdContentStr, "]", "]")
mdContentStr = strings.ReplaceAll(mdContentStr, ",", ",")

// 将处理过的字符串视为JSON对象,进行序列化和编码
var jsonMap map[string]interface{}
if err := json.Unmarshal([]byte(mdContentStr), &jsonMap); err != nil {
mylog.Printf("Error unmarshaling string to JSON:%v", err)
}
mdContentBytes, err := json.Marshal(jsonMap)
if err != nil {
mylog.Printf("Error marshaling jsonMap to JSON:%v", err)
}
encoded := base64.StdEncoding.EncodeToString(mdContentBytes)
messageText = "[CQ:markdown,data=base64://" + encoded + "]"
}
} else {
mylog.Printf("Error marshaling mdContent wrong type.")
}
} else {
mylog.Printf("Error marshaling mdContent wrong type.")
mylog.Printf("Error marshaling markdown segment to interface,contain type but data is nil.")
}
}
default:
Expand Down

0 comments on commit d57b61a

Please sign in to comment.