Как отправить сообщение на все серверы - PullRequest
0 голосов
/ 05 августа 2020

Я новый разработчик 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 голосов
/ 05 августа 2020

Я заменил .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 + '.');
            }
        });
    }
});
...