Improve logs and fix things with avatar reuploads
This commit is contained in:
@@ -44,7 +44,7 @@ func downloadDiscordAttachment(url string) ([]byte, error) {
|
|||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
if resp.StatusCode > 300 {
|
if resp.StatusCode > 300 {
|
||||||
data, _ := io.ReadAll(resp.Body)
|
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)
|
return io.ReadAll(resp.Body)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -323,24 +323,20 @@ func (puppet *Puppet) addMemberMeta(part *ConvertedMessage, msg *discordgo.Messa
|
|||||||
part.Extra = make(map[string]any)
|
part.Extra = make(map[string]any)
|
||||||
}
|
}
|
||||||
var avatarURL id.ContentURI
|
var avatarURL id.ContentURI
|
||||||
|
var discordAvatarURL string
|
||||||
if msg.Member.Avatar != "" {
|
if msg.Member.Avatar != "" {
|
||||||
var err error
|
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 {
|
if err != nil {
|
||||||
puppet.log.Warn().Err(err).
|
puppet.log.Warn().Err(err).
|
||||||
Str("avatar_id", msg.Author.Avatar).
|
Str("avatar_id", msg.Author.Avatar).
|
||||||
Msg("Failed to reupload guild user 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{
|
part.Extra["fi.mau.discord.guild_member_metadata"] = map[string]any{
|
||||||
"nick": msg.Member.Nick,
|
"nick": msg.Member.Nick,
|
||||||
"avatar_id": msg.Member.Avatar,
|
"avatar_id": msg.Member.Avatar,
|
||||||
"avatar_url": discordAvararURL,
|
"avatar_url": discordAvatarURL,
|
||||||
"avatar_mxc": avatarURL.String(),
|
"avatar_mxc": avatarURL.String(),
|
||||||
}
|
}
|
||||||
if msg.Member.Nick != "" || !avatarURL.IsEmpty() {
|
if msg.Member.Nick != "" || !avatarURL.IsEmpty() {
|
||||||
@@ -370,7 +366,7 @@ func (puppet *Puppet) addWebhookMeta(part *ConvertedMessage, msg *discordgo.Mess
|
|||||||
var avatarURL id.ContentURI
|
var avatarURL id.ContentURI
|
||||||
if msg.Author.Avatar != "" {
|
if msg.Author.Avatar != "" {
|
||||||
var err error
|
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 {
|
if err != nil {
|
||||||
puppet.log.Warn().Err(err).
|
puppet.log.Warn().Err(err).
|
||||||
Str("avatar_id", msg.Author.Avatar).
|
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
|
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
|
var downloadURL, ext string
|
||||||
if guildID == "" {
|
if guildID == "" {
|
||||||
downloadURL = discordgo.EndpointUserAvatar(userID, avatarID)
|
downloadURL = discordgo.EndpointUserAvatar(userID, avatarID)
|
||||||
@@ -233,17 +233,19 @@ func (br *DiscordBridge) reuploadUserAvatar(intent *appservice.IntentAPI, guildI
|
|||||||
ext = "gif"
|
ext = "gif"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
url := br.Config.Bridge.MediaPatterns.Avatar(userID, avatarID, ext)
|
if guildID == "" {
|
||||||
if !url.IsEmpty() {
|
url := br.Config.Bridge.MediaPatterns.Avatar(userID, avatarID, ext)
|
||||||
return url, nil
|
if !url.IsEmpty() {
|
||||||
|
return url, downloadURL, nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
copied, err := br.copyAttachmentToMatrix(intent, downloadURL, false, AttachmentMeta{
|
copied, err := br.copyAttachmentToMatrix(intent, downloadURL, false, AttachmentMeta{
|
||||||
AttachmentID: fmt.Sprintf("avatar/%s/%s/%s", guildID, userID, avatarID),
|
AttachmentID: fmt.Sprintf("avatar/%s/%s/%s", guildID, userID, avatarID),
|
||||||
})
|
})
|
||||||
if err != nil {
|
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 {
|
func (puppet *Puppet) UpdateAvatar(info *discordgo.User) bool {
|
||||||
@@ -260,7 +262,7 @@ func (puppet *Puppet) UpdateAvatar(info *discordgo.User) bool {
|
|||||||
puppet.AvatarURL = id.ContentURI{}
|
puppet.AvatarURL = id.ContentURI{}
|
||||||
|
|
||||||
if puppet.Avatar != "" && (puppet.AvatarURL.IsEmpty() || avatarChanged) {
|
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 {
|
if err != nil {
|
||||||
puppet.log.Warn().Err(err).Str("avatar_id", puppet.Avatar).Msg("Failed to reupload user avatar")
|
puppet.log.Warn().Err(err).Str("avatar_id", puppet.Avatar).Msg("Failed to reupload user avatar")
|
||||||
return true
|
return true
|
||||||
|
|||||||
Reference in New Issue
Block a user