当有人加入服务器时我有这个:
client.on('guildMemberAdd', (member) => {
console.log(`${member.user.username} joined the server`)
const embedJoins = new Discord.MessageEmbed()
.setColor(colourColl)
.setDescription(`**${member.user.username}** just joined the server`)
client.channels.cache.get(channelMissionControl).send(embedJoins);
});
我想在用户加入特定角色时做类似的事情。 这能做到吗?
答案 0 :(得分:0)
guildMemberUpdate
是一个客户端事件,旨在在公会成员发生更新时提供回调 - 例如昵称更改,以及最重要的角色更新。
我们可以轻松地使用此事件来确定用户角色何时更新,并回调要发送到我们要查找的特定频道的嵌入。
请记住,在完成此操作之前,您需要检查成员采取了哪些操作 - 就像他要更新昵称而不是角色一样,我们会收到一堆错误。幸运的是,guildMemberUpdate
为我们提供了 2 个参数:oldMember
和 newMember
,它们都是 GuildMember 对象,我们可以使用它们来查找是否有任何与成员角色有关的活动。让我们设置 2 个变量:
const oldRoles = oldMember.roles.cache;
const newRoles = newMember.roles.cache;
从那里,我们可以确定成员的角色列表是否已更新:
if (oldRoles.size < newRoles.size) {
// code
}
client.on('guildMemberUpdate', oldMember, newMember => {
const oldRoles = oldMember.roles.cache;
const newRoles = newMember.roles.cache;
if (oldRoles.size < newRoles.size) {
const Embed = new Discord.MessageEmbed();
.setTitle('Roles updated!');
.setDescription(`${newMember.user.username}'s roles have been updated!`);
.setColor(3426654);
newMember.guild.channels.cache.find(ch => ch.name.toLowerCase() === 'logs').send(Embed);
}
})
您可以在此处阅读有关 guildMemberUpdate
的更多信息:https://discord.js.org/#/docs/main/stable/class/Client?scrollTo=e-guildMemberUpdate