如何将特定角色更改的通知发送到特定频道?

问题描述 投票:0回答:1

我想在角色为某人改变时通知我们的主要聊天频道,但这是一个特定的角色 - 我怎么能这样做?

discord.js
1个回答
1
投票

我希望我能理解你的问题。如果事件被触发,您必须使用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
        });
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.