Add options to improve handling of webhook messages sent by other bridges
This commit is contained in:
@@ -308,9 +308,33 @@ func (portal *Portal) convertDiscordMessage(ctx context.Context, intent *appserv
|
||||
parts = append(parts, part)
|
||||
}
|
||||
}
|
||||
if msg.WebhookID != "" {
|
||||
for _, part := range parts {
|
||||
addWebhookMeta(part, msg)
|
||||
}
|
||||
}
|
||||
return parts
|
||||
}
|
||||
|
||||
func addWebhookMeta(part *ConvertedMessage, msg *discordgo.Message) {
|
||||
if msg.WebhookID == "" {
|
||||
return
|
||||
}
|
||||
if part.Extra == nil {
|
||||
part.Extra = make(map[string]any)
|
||||
}
|
||||
part.Extra["fi.mau.discord.webhook_metadata"] = map[string]any{
|
||||
"id": msg.WebhookID,
|
||||
"name": msg.Author.Username,
|
||||
"avatar_id": msg.Author.Avatar,
|
||||
"avatar_url": msg.Author.AvatarURL(""),
|
||||
}
|
||||
part.Extra["com.beeper.per_message_profile"] = map[string]any{
|
||||
"avatar_url": msg.Author.AvatarURL(""),
|
||||
"displayname": msg.Author.Username,
|
||||
}
|
||||
}
|
||||
|
||||
const (
|
||||
embedHTMLWrapper = `<blockquote class="discord-embed">%s</blockquote>`
|
||||
embedHTMLWrapperColor = `<blockquote class="discord-embed" background-color="#%06X">%s</blockquote>`
|
||||
@@ -628,5 +652,11 @@ func (portal *Portal) convertDiscordTextMessage(ctx context.Context, intent *app
|
||||
"com.beeper.linkpreviews": previews,
|
||||
}
|
||||
|
||||
if msg.WebhookID != "" && portal.bridge.Config.Bridge.PrefixWebhookMessages {
|
||||
content.EnsureHasHTML()
|
||||
content.Body = fmt.Sprintf("%s: %s", msg.Author.Username, content.Body)
|
||||
content.FormattedBody = fmt.Sprintf("<strong>%s</strong>: %s", html.EscapeString(msg.Author.Username), content.FormattedBody)
|
||||
}
|
||||
|
||||
return &ConvertedMessage{Type: event.EventMessage, Content: &content, Extra: extraContent}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user