From 93966fa3b996213e6b8d4edf4d5991ab295d73f2 Mon Sep 17 00:00:00 2001 From: SanaeFox <36219542+Hoshinonyaruko@users.noreply.github.com> Date: Thu, 22 Feb 2024 22:02:06 +0800 Subject: [PATCH] Beta326 (#333) * beta318 * beta319 * beta320 * beata321 * beta322 * beta323 * beta324 * beta325 * beta326 --- handlers/message_parser.go | 1 + handlers/send_guild_channel_forum.go | 25 +++++++++++++++++++++++-- url/shorturl.go | 1 + 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/handlers/message_parser.go b/handlers/message_parser.go index 50e584f5..c6e0991f 100644 --- a/handlers/message_parser.go +++ b/handlers/message_parser.go @@ -365,6 +365,7 @@ func transformMessageTextUrl(messageText string, message callapi.ActionMessage, // 根据配置处理URL if config.GetLotusValue() { // 连接到另一个gensokyo + mylog.Printf("转换url:%v", originalURL) shortURL := url.GenerateShortURL(originalURL) return shortURL } else { diff --git a/handlers/send_guild_channel_forum.go b/handlers/send_guild_channel_forum.go index d046321d..26326230 100644 --- a/handlers/send_guild_channel_forum.go +++ b/handlers/send_guild_channel_forum.go @@ -10,6 +10,7 @@ import ( "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/images" "github.com/hoshinonyaruko/gensokyo/mylog" + "mvdan.cc/xurls" "github.com/hoshinonyaruko/gensokyo/echo" @@ -165,14 +166,22 @@ func GenerateForumMessage(foundItems map[string][]string, messageText string) (* } `json:"paragraphs"` } - // 处理文本消息 + // 使用xurls正则表达式查找所有的URL + foundURLs := xurls.Relaxed.FindAllString(messageText, -1) + + // 移除文本中的URL + messageText = xurls.Relaxed.ReplaceAllStringFunc(messageText, func(originalURL string) string { + return "" + }) + + // 处理文本消息,除了URL if messageText != "" { richText.Paragraphs = append(richText.Paragraphs, struct { Elems []interface{} `json:"elems"` }{ Elems: []interface{}{ map[string]interface{}{ - "text": map[string]string{ + "text": map[string]interface{}{ "text": messageText, }, "type": 1, @@ -181,12 +190,24 @@ func GenerateForumMessage(foundItems map[string][]string, messageText string) (* }) } + // 为每个URL创建ELEM_TYPE_URL元素 + for _, url := range foundURLs { + richText.Paragraphs[0].Elems = append(richText.Paragraphs[0].Elems, map[string]interface{}{ + "url": map[string]interface{}{ + "url": url, + "desc": "点我跳转", + }, + "type": 4, + }) + } + if len(richText.Paragraphs) == 0 { // 初始化一个空段落 richText.Paragraphs = append(richText.Paragraphs, struct { Elems []interface{} "json:\"elems\"" }{}) } + // 处理图片链接 for _, url := range foundItems["url_image"] { richText.Paragraphs[0].Elems = append(richText.Paragraphs[0].Elems, map[string]interface{}{ diff --git a/url/shorturl.go b/url/shorturl.go index 137866ae..36c70048 100644 --- a/url/shorturl.go +++ b/url/shorturl.go @@ -169,6 +169,7 @@ func GenerateShortURL(longURL string) string { // 处理响应 if resp.StatusCode != http.StatusOK { mylog.Printf("Received non-200 status code: %d from server: %v", resp.StatusCode, requestURL) + mylog.Printf("返回码400请检查lotus密码是否正确!") return "" }