Reupload webhook avatars to fill custom metadata

This commit is contained in:
Tulir Asokan
2023-05-27 13:35:37 +03:00
parent 4393772ccc
commit 52fa4da8b2
5 changed files with 58 additions and 71 deletions

View File

@@ -310,27 +310,38 @@ func (portal *Portal) convertDiscordMessage(ctx context.Context, intent *appserv
}
if msg.WebhookID != "" {
for _, part := range parts {
addWebhookMeta(part, msg)
portal.addWebhookMeta(part, msg)
}
}
return parts
}
func addWebhookMeta(part *ConvertedMessage, msg *discordgo.Message) {
func (portal *Portal) addWebhookMeta(part *ConvertedMessage, msg *discordgo.Message) {
if msg.WebhookID == "" {
return
}
if part.Extra == nil {
part.Extra = make(map[string]any)
}
var avatarURL id.ContentURI
if msg.Author.Avatar != "" {
var err error
avatarURL, err = portal.bridge.reuploadUserAvatar(portal.MainIntent(), msg.Author.ID, msg.Author.Avatar)
if err != nil {
portal.log.Warn().Err(err).
Str("avatar_id", msg.Author.Avatar).
Msg("Failed to reupload webhook avatar")
}
}
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(""),
"avatar_mxc": avatarURL.String(),
}
part.Extra["com.beeper.per_message_profile"] = map[string]any{
"avatar_url": msg.Author.AvatarURL(""),
"avatar_url": avatarURL.String(),
"displayname": msg.Author.Username,
}
}