Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Beta450 #450

Merged
merged 5 commits into from
Jul 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 70 additions & 1 deletion handlers/avatar.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ func ProcessCQAvatar(groupID string, text string) string {
_, originalUserID, err = idmap.RetrieveRowByIDv2Pro("690426430", qqStr)
if err != nil {
mylog.Printf("Error reading private originalUserID: %v", err)
return ""
}
}
} else {
Expand All @@ -47,6 +48,70 @@ func ProcessCQAvatar(groupID string, text string) string {
return text
}

func ProcessCQAvatarNoGroupID(text string) string {
// 断言并获取 groupID 和 qq 号
qqRegex := regexp.MustCompile(`\[CQ:avatar,qq=(\d+)\]`)
qqMatches := qqRegex.FindAllStringSubmatch(text, -1)

for _, match := range qqMatches {
qqStr := match[1] // 提取 qq 号

var originalUserID string
var err error
if config.GetIdmapPro() {
_, originalUserID, err = idmap.RetrieveRowByIDv2Pro("690426430", qqStr)
if err != nil {
mylog.Printf("Error reading private originalUserID: %v", err)
}
} else {
originalUserID, err = idmap.RetrieveRowByIDv2(qqStr)
if err != nil {
mylog.Printf("Error retrieving original UserID: %v", err)
}
}

// 生成头像URL
avatarURL, _ := GenerateAvatarURLV2(originalUserID)

// 替换文本中的 [CQ:avatar,qq=12345678] 为 [CQ:image,file=avatarurl]
replacement := fmt.Sprintf("[CQ:image,file=%s]", avatarURL)
text = qqRegex.ReplaceAllString(text, replacement)
}

return text
}

func GetAvatarCQCodeNoGroupID(qqNumber string) (string, error) {
var originalUserID string
var err error

if config.GetIdmapPro() {
// 如果配置为使用Pro版本,则调用RetrieveRowByIDv2Pro
_, originalUserID, err = idmap.RetrieveRowByIDv2Pro("690426430", qqNumber)
if err != nil {
mylog.Printf("Error reading private originalUserID: %v", err)
return "", err
}
} else {
// 否则调用RetrieveRowByIDv2
originalUserID, err = idmap.RetrieveRowByIDv2(qqNumber)
if err != nil {
mylog.Printf("Error retrieving original UserID: %v", err)
return "", err
}
}

// 生成头像URL
avatarURL, err := GenerateAvatarURLV2(originalUserID)
if err != nil {
mylog.Printf("Error generating avatar URL: %v", err)
return "", err
}

// 返回格式化后的字符串
return fmt.Sprintf("[CQ:image,file=%s]", avatarURL), nil
}

func GetAvatarCQCode(groupID, qqNumber string) (string, error) {
var originalUserID string
var err error
Expand All @@ -56,7 +121,11 @@ func GetAvatarCQCode(groupID, qqNumber string) (string, error) {
_, originalUserID, err = idmap.RetrieveRowByIDv2Pro(groupID, qqNumber)
if err != nil {
mylog.Printf("Error retrieving original GroupID: %v", err)
return "", err
_, originalUserID, err = idmap.RetrieveRowByIDv2Pro("690426430", qqNumber)
if err != nil {
mylog.Printf("Error reading private originalUserID: %v", err)
return "", err
}
}
} else {
// 否则调用RetrieveRowByIDv2
Expand Down
21 changes: 17 additions & 4 deletions handlers/message_parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -416,8 +416,13 @@ func parseMessageContent(paramsMessage callapi.ParamsContent, message callapi.Ac
if config.GetEnableChangeWord() {
messageText = acnode.CheckWordOUT(messageText)
}
// 解析[CQ:avatar,qq=123456]
messageText = ProcessCQAvatar(paramsMessage.GroupID.(string), messageText)
if paramsMessage.GroupID == nil {
// 解析[CQ:avatar,qq=123456]
messageText = ProcessCQAvatarNoGroupID(messageText)
} else {
// 解析[CQ:avatar,qq=123456]
messageText = ProcessCQAvatar(paramsMessage.GroupID.(string), messageText)
}
case []interface{}:
//多个映射组成的切片
mylog.Printf("params.message is a slice (segment_type_koishi)\n")
Expand Down Expand Up @@ -454,7 +459,11 @@ func parseMessageContent(paramsMessage callapi.ParamsContent, message callapi.Ac
segmentContent = "[CQ:at,qq=" + qqNumber + "]"
case "avatar":
qqNumber, _ := segmentMap["data"].(map[string]interface{})["qq"].(string)
segmentContent, _ = GetAvatarCQCode(paramsMessage.GroupID.(string), qqNumber)
if paramsMessage.GroupID == nil {
segmentContent, _ = GetAvatarCQCodeNoGroupID(qqNumber)
} else {
segmentContent, _ = GetAvatarCQCode(paramsMessage.GroupID.(string), qqNumber)
}
case "markdown":
mdContent, ok := segmentMap["data"].(map[string]interface{})["data"]
if ok {
Expand Down Expand Up @@ -525,7 +534,11 @@ func parseMessageContent(paramsMessage callapi.ParamsContent, message callapi.Ac
messageText = "[CQ:at,qq=" + qqNumber + "]"
case "avatar":
qqNumber, _ := message["data"].(map[string]interface{})["qq"].(string)
messageText, _ = GetAvatarCQCode(paramsMessage.GroupID.(string), qqNumber)
if paramsMessage.GroupID == nil {
messageText, _ = GetAvatarCQCodeNoGroupID(qqNumber)
} else {
messageText, _ = GetAvatarCQCode(paramsMessage.GroupID.(string), qqNumber)
}
case "markdown":
mdContent, ok := message["data"].(map[string]interface{})["data"]
if ok {
Expand Down
Loading