forked from mirror/mautrix-discord
Improve logs and fix things with avatar reuploads
This commit is contained in:
parent
00465bb715
commit
3247709abb
3 changed files with 14 additions and 16 deletions
|
@ -44,7 +44,7 @@ func downloadDiscordAttachment(url string) ([]byte, error) {
|
|||
defer resp.Body.Close()
|
||||
if resp.StatusCode > 300 {
|
||||
data, _ := io.ReadAll(resp.Body)
|
||||
return nil, fmt.Errorf("unexpected status %d: %s", resp.StatusCode, data)
|
||||
return nil, fmt.Errorf("unexpected status %d downloading %s: %s", resp.StatusCode, url, data)
|
||||
}
|
||||
return io.ReadAll(resp.Body)
|
||||
}
|
||||
|
|
|
@ -323,24 +323,20 @@ func (puppet *Puppet) addMemberMeta(part *ConvertedMessage, msg *discordgo.Messa
|
|||
part.Extra = make(map[string]any)
|
||||
}
|
||||
var avatarURL id.ContentURI
|
||||
var discordAvatarURL string
|
||||
if msg.Member.Avatar != "" {
|
||||
var err error
|
||||
avatarURL, err = puppet.bridge.reuploadUserAvatar(puppet.DefaultIntent(), msg.GuildID, msg.Author.ID, msg.Author.Avatar)
|
||||
avatarURL, discordAvatarURL, err = puppet.bridge.reuploadUserAvatar(puppet.DefaultIntent(), msg.GuildID, msg.Author.ID, msg.Author.Avatar)
|
||||
if err != nil {
|
||||
puppet.log.Warn().Err(err).
|
||||
Str("avatar_id", msg.Author.Avatar).
|
||||
Msg("Failed to reupload guild user avatar")
|
||||
}
|
||||
}
|
||||
var discordAvararURL string
|
||||
if msg.Member.Avatar != "" {
|
||||
msg.Member.User = msg.Author
|
||||
discordAvararURL = msg.Member.AvatarURL("")
|
||||
}
|
||||
part.Extra["fi.mau.discord.guild_member_metadata"] = map[string]any{
|
||||
"nick": msg.Member.Nick,
|
||||
"avatar_id": msg.Member.Avatar,
|
||||
"avatar_url": discordAvararURL,
|
||||
"avatar_url": discordAvatarURL,
|
||||
"avatar_mxc": avatarURL.String(),
|
||||
}
|
||||
if msg.Member.Nick != "" || !avatarURL.IsEmpty() {
|
||||
|
@ -370,7 +366,7 @@ func (puppet *Puppet) addWebhookMeta(part *ConvertedMessage, msg *discordgo.Mess
|
|||
var avatarURL id.ContentURI
|
||||
if msg.Author.Avatar != "" {
|
||||
var err error
|
||||
avatarURL, err = puppet.bridge.reuploadUserAvatar(puppet.DefaultIntent(), "", msg.Author.ID, msg.Author.Avatar)
|
||||
avatarURL, _, err = puppet.bridge.reuploadUserAvatar(puppet.DefaultIntent(), "", msg.Author.ID, msg.Author.Avatar)
|
||||
if err != nil {
|
||||
puppet.log.Warn().Err(err).
|
||||
Str("avatar_id", msg.Author.Avatar).
|
||||
|
|
16
puppet.go
16
puppet.go
|
@ -216,7 +216,7 @@ func (puppet *Puppet) UpdateName(info *discordgo.User) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (br *DiscordBridge) reuploadUserAvatar(intent *appservice.IntentAPI, guildID, userID, avatarID string) (id.ContentURI, error) {
|
||||
func (br *DiscordBridge) reuploadUserAvatar(intent *appservice.IntentAPI, guildID, userID, avatarID string) (id.ContentURI, string, error) {
|
||||
var downloadURL, ext string
|
||||
if guildID == "" {
|
||||
downloadURL = discordgo.EndpointUserAvatar(userID, avatarID)
|
||||
|
@ -233,17 +233,19 @@ func (br *DiscordBridge) reuploadUserAvatar(intent *appservice.IntentAPI, guildI
|
|||
ext = "gif"
|
||||
}
|
||||
}
|
||||
url := br.Config.Bridge.MediaPatterns.Avatar(userID, avatarID, ext)
|
||||
if !url.IsEmpty() {
|
||||
return url, nil
|
||||
if guildID == "" {
|
||||
url := br.Config.Bridge.MediaPatterns.Avatar(userID, avatarID, ext)
|
||||
if !url.IsEmpty() {
|
||||
return url, downloadURL, nil
|
||||
}
|
||||
}
|
||||
copied, err := br.copyAttachmentToMatrix(intent, downloadURL, false, AttachmentMeta{
|
||||
AttachmentID: fmt.Sprintf("avatar/%s/%s/%s", guildID, userID, avatarID),
|
||||
})
|
||||
if err != nil {
|
||||
return url, err
|
||||
return id.ContentURI{}, downloadURL, err
|
||||
}
|
||||
return copied.MXC, nil
|
||||
return copied.MXC, downloadURL, nil
|
||||
}
|
||||
|
||||
func (puppet *Puppet) UpdateAvatar(info *discordgo.User) bool {
|
||||
|
@ -260,7 +262,7 @@ func (puppet *Puppet) UpdateAvatar(info *discordgo.User) bool {
|
|||
puppet.AvatarURL = id.ContentURI{}
|
||||
|
||||
if puppet.Avatar != "" && (puppet.AvatarURL.IsEmpty() || avatarChanged) {
|
||||
url, err := puppet.bridge.reuploadUserAvatar(puppet.DefaultIntent(), "", info.ID, puppet.Avatar)
|
||||
url, _, err := puppet.bridge.reuploadUserAvatar(puppet.DefaultIntent(), "", info.ID, puppet.Avatar)
|
||||
if err != nil {
|
||||
puppet.log.Warn().Err(err).Str("avatar_id", puppet.Avatar).Msg("Failed to reupload user avatar")
|
||||
return true
|
||||
|
|
Loading…
Reference in a new issue