初始化仓库
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package weixin
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func isMediaItemType(t int) bool {
|
||||
switch t {
|
||||
case messageItemImage, messageItemVoice, messageItemFile, messageItemVideo:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// bodyFromItemList extracts user-visible text from Weixin item_list (text, quotes, voice ASR).
|
||||
func bodyFromItemList(items []messageItem) string {
|
||||
if len(items) == 0 {
|
||||
return ""
|
||||
}
|
||||
for _, item := range items {
|
||||
switch item.Type {
|
||||
case messageItemText:
|
||||
if item.TextItem == nil {
|
||||
continue
|
||||
}
|
||||
text := strings.TrimSpace(item.TextItem.Text)
|
||||
ref := item.RefMsg
|
||||
if ref == nil {
|
||||
return text
|
||||
}
|
||||
if ref.MessageItem != nil && isMediaItemType(ref.MessageItem.Type) {
|
||||
return text
|
||||
}
|
||||
var parts []string
|
||||
if ref.Title != "" {
|
||||
parts = append(parts, ref.Title)
|
||||
}
|
||||
if ref.MessageItem != nil {
|
||||
refBody := bodyFromItemList([]messageItem{*ref.MessageItem})
|
||||
if refBody != "" {
|
||||
parts = append(parts, refBody)
|
||||
}
|
||||
}
|
||||
if len(parts) == 0 {
|
||||
return text
|
||||
}
|
||||
return fmt.Sprintf("[引用: %s]\n%s", strings.Join(parts, " | "), text)
|
||||
case messageItemVoice:
|
||||
if item.VoiceItem != nil && strings.TrimSpace(item.VoiceItem.Text) != "" {
|
||||
return strings.TrimSpace(item.VoiceItem.Text)
|
||||
}
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
Reference in New Issue
Block a user