Procházet zdrojové kódy

Allow inline links in normal messages

Tulir Asokan před 1 rokem
rodič
revize
345391f8b1
2 změnil soubory, kde provedl 9 přidání a 1 odebrání
  1. 8 0
      formatter.go
  2. 1 1
      portal_convert.go

+ 8 - 0
formatter.go

@@ -216,6 +216,14 @@ var matrixHTMLParser = &format.HTMLParser{
 		}
 		return fmt.Sprintf("||%s||", text)
 	},
+	LinkConverter: func(text, href string, ctx format.Context) string {
+		if text == href {
+			return text
+		} else if !discordLinkRegexFull.MatchString(href) {
+			return fmt.Sprintf("%s (%s)", escapeDiscordMarkdown(text), escapeDiscordMarkdown(href))
+		}
+		return fmt.Sprintf("[%s](%s)", escapeDiscordMarkdown(text), href)
+	},
 }
 
 func (portal *Portal) parseMatrixHTML(content *event.MessageEventContent) (string, *discordgo.MessageAllowedMentions) {

+ 1 - 1
portal_convert.go

@@ -673,7 +673,7 @@ func (portal *Portal) convertDiscordTextMessage(ctx context.Context, intent *app
 		htmlParts = append(htmlParts, fmt.Sprintf(msgInteractionTemplateHTML, puppet.MXID, puppet.Name, msg.Interaction.Name))
 	}
 	if msg.Content != "" && !isPlainGifMessage(msg) {
-		htmlParts = append(htmlParts, portal.renderDiscordMarkdownOnlyHTML(msg.Content, false))
+		htmlParts = append(htmlParts, portal.renderDiscordMarkdownOnlyHTML(msg.Content, true))
 	}
 	previews := make([]*BeeperLinkPreview, 0)
 	for i, embed := range msg.Embeds {