如何向所有服务器发送消息

时间:2020-08-05 08:51:11

标签: javascript node.js discord discord.js

我是Discord.js的新开发人员,我想知道如何向我的机器人所在的所有公会/服务器发送消息。

以前有一些答案,但都是针对旧版本的,有人可以帮忙吗?我已经尝试了这段简洁的代码,但是在当前版本中不起作用。

Bot.on('message', async (message) => {
    if (message.content === "e") {
        var guildList = Bot.guilds.array();
        try {
            guildList.forEach(guild => guild.defaultChannel.send("message"));
        } catch (err) {
            console.log("Could not send message to " + guild.name);
        }
    }
});

1 个答案:

答案 0 :(得分:0)

我已将.defaultChannel替换为以下内容,试图获得一个名为 general 的频道。如果不能,它将尝试获取第一个频道。如果同样失败,则会记录错误:

const channel = guild.channels.cache.find(channel => channel.name === 'general') || guild.channels.cache.first();
if (channel) {
    ...
} else {
    console.log('The server ' + guild.name + ' has no channels.');
}

我也已更改为Discord.Collection() .each()方法,而不是将集合转换为数组并使用.forEach()

Bot.on('message', async (message) => {
    if (message.content === "e") {
        Bot.guilds.each(guild => {
            try {
                const channel = guild.channels.cache.find(channel => channel.name === 'general') || guild.channels.cache.first();
                if (channel) {
                    channel.send('message');
                } else {
                    console.log('The server ' + guild.name + ' has no channels.');
                }
            } catch (err) {
                console.log('Could not send message to ' + guild.name + '.');
            }
        });
    }
});