diff --git a/config/config.go b/config/config.go index e3bc138f..5eb2fe50 100644 --- a/config/config.go +++ b/config/config.go @@ -2256,3 +2256,27 @@ func GetGlobalGroupMsgReceiveMessage() string { } return "" } + +// 获取EntersAsBlock状态 +func GetEntersAsBlock() bool { + mu.Lock() + defer mu.Unlock() + + if instance == nil { + mylog.Println("Warning: instance is nil when trying to EntersAsBlock.") + return false + } + return instance.Settings.EntersAsBlock +} + +// 获取NativeMD状态 +func GetNativeMD() bool { + mu.Lock() + defer mu.Unlock() + + if instance == nil { + mylog.Println("Warning: instance is nil when trying to NativeMD.") + return false + } + return instance.Settings.NativeMD +} diff --git a/handlers/send_group_msg.go b/handlers/send_group_msg.go index 044afd83..17a72838 100644 --- a/handlers/send_group_msg.go +++ b/handlers/send_group_msg.go @@ -1335,6 +1335,7 @@ func auto_md(message callapi.ActionMessage, messageText string, richMediaMessage mylog.Printf("获取图片宽高出错") } imgDesc := fmt.Sprintf("图片 #%dpx #%dpx", width, height) + // 将所有的\r\n替换为\r messageText = strings.ReplaceAll(messageText, "\r\n", "\r") // 将所有的\n替换为\r @@ -1343,18 +1344,33 @@ func auto_md(message callapi.ActionMessage, messageText string, richMediaMessage if !strings.HasPrefix(messageText, "\r") { messageText = "\r" + messageText } - // 创建 MarkdownParams 的实例 - mdParams := []*dto.MarkdownParams{ - {Key: "text_start", Values: []string{" "}}, //空着 - {Key: "img_dec", Values: []string{imgDesc}}, - {Key: "img_url", Values: []string{imgURL}}, - {Key: "text_end", Values: []string{messageText}}, + if config.GetEntersAsBlock() { + messageText = strings.ReplaceAll(messageText, "\r", " ") } - // 组合模板 Markdown - md = &dto.Markdown{ - CustomTemplateID: CustomTemplateID, - Params: mdParams, + + // 根据配置决定如何生成Markdown内容 + if !config.GetNativeMD() { + // 创建 MarkdownParams 的实例 + mdParams := []*dto.MarkdownParams{ + {Key: "text_start", Values: []string{" "}}, //空着 + {Key: "img_dec", Values: []string{imgDesc}}, + {Key: "img_url", Values: []string{imgURL}}, + {Key: "text_end", Values: []string{messageText}}, + } + // 组合模板 Markdown + md = &dto.Markdown{ + CustomTemplateID: CustomTemplateID, + Params: mdParams, + } + } else { + // 使用原生Markdown格式 + content := fmt.Sprintf(" %s![%s](%s)%s", " ", imgDesc, imgURL, messageText) + // 原生 Markdown + md = &dto.Markdown{ + Content: content, + } } + whiteList := matchedPrefix.WhiteList // 创建 CustomKeyboard customKeyboard := &keyboard.CustomKeyboard{ diff --git a/structs/structs.go b/structs/structs.go index 14e41dc1..7786e831 100644 --- a/structs/structs.go +++ b/structs/structs.go @@ -128,6 +128,8 @@ type Settings struct { //MD相关 CustomTemplateID string `yaml:"custom_template_id"` KeyBoardID string `yaml:"keyboard_id"` + NativeMD bool `yaml:"native_md"` + EntersAsBlock bool `yaml:"enters_as_block"` //发送行为修改 LazyMessageId bool `yaml:"lazy_message_id"` RamDomSeq bool `yaml:"ramdom_seq"` diff --git a/template/config_template.go b/template/config_template.go index c3842272..37c3e312 100644 --- a/template/config_template.go +++ b/template/config_template.go @@ -167,7 +167,9 @@ settings: #MD相关 custom_template_id : "" #自动转换图文信息到md所需要的id *需要应用端支持双方向echo keyboard_id : "" #自动转换图文信息到md所需要的按钮id *需要应用端支持双方向echo - + native_md : false #自动转换图文信息到md,使用原生markdown能力. + enters_as_block : false #自动转换图文信息到md,\r \r\n \n 替换为空格. + #发送行为修改 lazy_message_id : false #false=message_id 条条准确对应 true=message_id 按时间范围随机对应(适合主动推送bot)前提,有足够多的活跃信息刷新id池 ramdom_seq : false #当多开gensokyo时,如果遇到群信息只能发出一条,请开启每个gsk的此项.(建议使用一个gsk连接多个应用)