首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么来自oldMember和newMember的头像url在guildMemberUpdate中是相同的?(Discord.js)

为什么来自oldMember和newMember的头像url在guildMemberUpdate中是相同的?(Discord.js)
EN

Stack Overflow用户
提问于 2021-04-04 03:59:46
回答 1查看 127关注 0票数 1

当有人更改头像时,我尝试在通道中发送消息,但它不起作用,因为总是来自oldUser和newUser的url是相同的(两次是新的头像url),我对昵称更改做了类似的事情,它实际上工作得很好。

代码语言:javascript
复制
bot.on("guildMemberUpdate", (oldMember, newMember) => {
    //checks if the change is the nickname
    if (oldMember.displayName != newMember.displayName) {
        console.log(`(NEW ACTIVITY): @${oldMember.user.username} changed username. @${oldMember.displayName} was the username before update, @${newMember.displayName} is the username after update`);
        //build embed
        messages.usernameUpdate(bot, oldMember, newMember);
    }

    console.log(oldMember.user.displayAvatarURL());
    console.log(newMember.user.displayAvatarURL());
    //checks if the change is the profile picture
    if (oldMember.user.displayAvatarURL() != newMember.user.displayAvatarURL()) {
        console.log(`(NEW ACTIVITY): @${newMember.user.username} updated profile picture`);
        //build embed
        messages.photoUpdate(bot, oldMember, newMember);
    }
});

更改个人资料图片后的日志,oldMember和newMember头像url相同(两次是新头像url):

代码语言:javascript
复制
https://cdn.discordapp.com/avatars/826073829302206525/4eab82e784ca3caa8ed1ba18631541b2.webp
https://cdn.discordapp.com/avatars/826073829302206525/4eab82e784ca3caa8ed1ba18631541b2.webp
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-04 04:42:40

我认为它是一个known issue,它的工作方式是这样的,因为如果用户信息发生变化,Discord会同时发送PRESENCE_UPDATEGUILD_MEMBER_UPDATE

首先,在PRESENCE_UPDATE上,discord.js确定更改并将其应用于缓存,并且在GUILD_MEMBER_UPDATE上,底层用户已经从PRESENCE_UPDATE更改,因此不能使用旧成员发送旧用户。因此,每次用户更新时,GUILD_MEMBER_UPDATE将不会保存“旧”数据,而只保存更新后的版本。这就是oldMember.user.displayAvatarURL()newMember.user.displayAvatarURL()相同的原因。

我知道这可能不是你想要的答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66935373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档