我想在角色为某人改变时通知我们的主要聊天频道,但这是一个特定的角色 - 我怎么能这样做?
我希望我能理解你的问题。如果事件被触发,您必须使用guildMemberUpdate事件来检查角色是否仍然相同。然后,您必须运行一个简单的for循环并检查已从guildMember中删除或分配的角色。
这是代码:
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('guildMemberupdate', (oldMember, newMember) => {
const messagechannel = oldMember.guild.channels.find(r => r.name === 'Name of the channel where the announcement should be sent');
if (!messagechannel) return 'Channel does not exist!';
if (oldMember.roles.size < newMember.roles.size) {
const embed = new Discord.RichEmbed()
.setColor('ORANGE')
.setTimestamp()
.setAuthor('Role assigned')
.addField(`📎 Member:`, `${oldMember.user.tag} (${oldMember.id})`);
for (const role of newMember.roles.map(x => x.id)) {
if (!oldMember.roles.has(role)) {
embed.addField(`📥 Role(s):`, `${oldMember.guild.roles.get(role).name}`);
}
}
messagechannel.send({
embed
});
}
if (oldMember.roles.size > newMember.roles.size) {
const embed = new Discord.RichEmbed()
.setColor('ORANGE')
.setTimestamp()
.setAuthor('Role removed')
.addField(`📎 Member`, `${oldMember.user.tag} (${oldMember.id})`);
for (const role of oldMember.roles.map(x => x.id)) {
if (!newMember.roles.has(role)) {
embed.addField(`📥 Role(s):`, `${oldMember.guild.roles.get(role).name}`);
}
}
messagechannel.send({
embed
});
}
});