Discord.js channelUpdate事件,忽略某些频道

时间:2020-03-08 15:43:57

标签: discord.js

Hello Stackoverflow社区。对于Discord.js中的channelUpdate事件,我很好奇,是否有可能忽略某些频道但记录其余频道?

bot.on("channelUpdate", async (oldChannel, newChannel) => {

        // Get stat channel IDs
        let totalUsers = oldChannel.guild.channels.get('667335552558956554');
        let onlineUsers = oldChannel.guild.channels.get('667335645894541331');
        let totalBots = oldChannel.guild.channels.get('667337560179343374');
        //Leave the stat channels alone, or too much logging will happen
        //.parent.id === '667335310350352394';
        if (totalUsers || onlineUsers || totalBots) return;

        let oldCategory = oldChannel.parent;
        let newCategory = newChannel.parent;
        let guildsChannel = newChannel.guild;
        if (!newCategory) newCategory = "None";
        if (!guildsChannel || !guildsChannel.available) return;

        let types = {
          "text"  : "Text channel",
          "voice" : "Voice channel",
          "null"  : "None"
        };

        const logchannel = channel.guild.channels.find(channel => channel.name === "server-logs")

        if (!logchannel) return;
        if (!logchannel.permissionsFor(oldChannel.guild.me).has('VIEW_CHANNEL')) return;
        if (!logchannel.permissionsFor(oldChannel.guild.me).has('SEND_MESSAGES')) return;

        if (oldChannel.name !== newChannel.name) {

        let channelNameUpdateEmbed = new Discord.RichEmbed()
        .setColor("#ffc500")
        .setDescription("Channel name updated.")
        .addField("Old channel name", `\`${oldChannel.name}\``, true)
        .addBlankField(true)
        .addField("New channel name", `\`${newChannel.name}\``, true)
        .addField("Channel type", `${types[newChannel.type]}`, true)
        .addBlankField(true)
        .addField("Channel category", `${newCategory}`, true)
        .setFooter(`Channel ID: ${newChannel.id} ?`)
        .setTimestamp()

        logchannel.send(channelNameUpdateEmbed).catch()

        }
});

那些被标记为“统计通道”的标记,是否有可能忽略这些标记?会员每次在线或离线时,其他日志通道将被淹没

谢谢!

1 个答案:

答案 0 :(得分:1)

当然,您可以创建ingoreChannel arr并检查频道是否忽略arr。

赞:

bot.on('channelUpdate', async (oldChannel, newChannel) => {
    const ignoreChannels = ['667335552558956554', '667335645894541331', '667337560179343374'];
    // Get stat channel IDs
    if (ignoreChannels.includes(oldChannel.id)) return;
    //Leave the stat channels alone, or too much logging will happen
    //.parent.id === '667335310350352394';

    let oldCategory = oldChannel.parent;
    let newCategory = newChannel.parent;
    let guildsChannel = newChannel.guild;
    if (!newCategory) newCategory = 'None';
    if (!guildsChannel || !guildsChannel.available) return;

    let types = {
        text: 'Text channel',
        voice: 'Voice channel',
        null: 'None',
    };

    const logchannel = channel.guild.channels.find(channel => channel.name === 'server-logs');

    if (!logchannel) return;
    if (!logchannel.permissionsFor(oldChannel.guild.me).has('VIEW_CHANNEL')) return;
    if (!logchannel.permissionsFor(oldChannel.guild.me).has('SEND_MESSAGES')) return;

    if (oldChannel.name !== newChannel.name) {
        let channelNameUpdateEmbed = new Discord.RichEmbed()
            .setColor('#ffc500')
            .setDescription('Channel name updated.')
            .addField('Old channel name', `\`${oldChannel.name}\``, true)
            .addBlankField(true)
            .addField('New channel name', `\`${newChannel.name}\``, true)
            .addField('Channel type', `${types[newChannel.type]}`, true)
            .addBlankField(true)
            .addField('Channel category', `${newCategory}`, true)
            .setFooter(`Channel ID: ${newChannel.id} ?`)
            .setTimestamp();

        logchannel.send(channelNameUpdateEmbed).catch();
    }
});