Javascript Discord.js-如何记录角色更改?

Javascript Discord.js-如何记录角色更改?,javascript,discord.js,Javascript,Discord.js,我正在Discord.jsv12.2.0上的Discord bot上设置服务器日志,目前我正在尝试设置角色日志。我在互联网上搜索了一下,我只能在旧版本的Discord.js上找到解决方案,而旧版本的Discord.js显然不适用于v12.2.0。我已经设置了guildMemberUpdate事件来记录昵称更改,但我不知道如何为角色执行此操作。这可能非常简单,但我不确定我会怎么做 以下是我目前的代码: client.on('guildMemberUpdate', (oldMember, newMe

我正在Discord.jsv12.2.0上的Discord bot上设置服务器日志,目前我正在尝试设置角色日志。我在互联网上搜索了一下,我只能在旧版本的Discord.js上找到解决方案,而旧版本的Discord.js显然不适用于v12.2.0。我已经设置了guildMemberUpdate事件来记录昵称更改,但我不知道如何为角色执行此操作。这可能非常简单,但我不确定我会怎么做

以下是我目前的代码:

client.on('guildMemberUpdate', (oldMember, newMember) => {
  if (!oldMember.nickname && newMember.nickname) {
    const membernewnicklog = new Discord.MessageEmbed()
      .setAuthor(`${newMember.user.tag}`, `${newMember.user.displayAvatarURL({ format: "png", dynamic: true })}`)
      .setDescription(`**${newMember} nickname added**`)
      .setFooter(`${newMember.user.username}'s ID: ${newMember.id}`)
      .setTimestamp()
      .setColor('#ffff00')
      .addField("New nickname", newMember.nickname)
    client.channels.cache.get('736996028787589201').send(membernewnicklog);
    return;
  }
  if (oldMember.nickname && !newMember.nickname) {
    const memberremovenicklog = new Discord.MessageEmbed()
      .setAuthor(`${oldMember.user.tag}`, `${oldMember.user.displayAvatarURL({ format: "png", dynamic: true })}`)
      .setDescription(`**${oldMember} nickname removed**`)
      .setFooter(`${oldMember.user.username}'s ID: ${oldMember.id}`)
      .setTimestamp()
      .setColor('#f04747')
      .addField("Old nickname", oldMember.nickname)
    client.channels.cache.get('736996028787589201').send(memberremovenicklog);
    return;
  }
  if (oldMember.nickname && newMember.nickname) {
    const memberchangednicklog = new Discord.MessageEmbed()
      .setAuthor(`${newMember.user.tag}`, `${newMember.user.displayAvatarURL({ format: "png", dynamic: true })}`)
      .setDescription(`**${newMember} nickname changed**`)
      .setFooter(`${newMember.user.username}'s ID: ${newMember.id}`)
      .setTimestamp()
      .setColor('#ff4500')
      .addField("Before", oldMember.nickname)
      .addField("After", newMember.nickname);
    client.channels.cache.get('736996028787589201').send(memberchangednicklog);
    return;
  }
});
这就是我要说的:(另一个机器人的例子)

任何帮助都将不胜感激。谢谢

client.on(“guildMemberUpdate”,(旧会员、新会员)=>{
//旧角色集合的大小大于新角色集合的大小。已删除角色。
if(oldMember.roles.cache.size>newMember.roles.cache.size){
//创建嵌入消息。
const Embed=new discord.MessageEmbed();
嵌入。设置颜色(“红色”);
Embed.setAuthor(newMember.user.tag,newMember.user.avatarURL());
//循环遍历角色并检查删除了哪个角色。
oldMember.roles.cache.forEach(角色=>{
如果(!newMember.roles.cache.has(role.id)){
Embed.addField(“角色已删除”,角色);
}
});
client.channels.cache.get(“ChannelID”).send(嵌入);
}else if(oldMember.roles.cache.size{
如果(!oldMember.roles.cache.has(role.id)){
Embed.addField(“角色添加”,角色);
}
});
client.channels.cache.get(“ChannelID”).send(嵌入);
}
});

我是帮助您解决原始问题的人,您的代码没有多大意义。无论它在哪里说
(oldMember.昵称&&newMember.昵称)
都应该说
if(oldMember.昵称!==newMember.昵称)
。非常感谢:)