Я хочу получить количество участников в боре разногласий, но это дает ошибку - PullRequest
1 голос
/ 25 сентября 2019

Я хочу получить количество участников в боре разногласий, но это дает ошибку.Я ищу это через Интернет для этого, и я не нахожу это!Вот код:

const Commando = require('discord.js-commando');
const bot = new Commando.Client({commandPrefix: '$'});
const TOKEN = 'here is token';
const MIN_INTERVAL = 3 * 1000;
const guild = bot.guilds.get("394805546450026496");

bot.registry.registerGroup('connectc', 'Connectc');
bot.registry.registerGroup('defaultc', 'Defaultc');
bot.registry.registerDefaults();
bot.registry.registerCommandsIn(__dirname + "/commands")

bot.on('ready', function(){
    console.log("Ready");
    setInterval(function(){
        var memberCount = guild.members.filter(member => !member.user.bot).size;
        var memberCountChannel = bot.channels.get("547805078787194891");
        memberCountChannel.setName("?Osoby: "+ memberCount +" ?");
    }, MIN_INTERVAL);
});
bot.login(TOKEN);

А здесь ошибка:

C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\index.js:18
    var memberCount = guild.members.filter(member => !member.user.bot).size;
                            ^

TypeError: Cannot read property 'members' of undefined
    at CommandoClient.<anonymous> (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\index.js:18:29)    
    at CommandoClient.emit (events.js:194:15)
    at WebSocketConnection.triggerReady (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:125:17)
    at WebSocketConnection.checkIfReady (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:141:61)
    at GuildCreateHandler.handle (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\node_modules\discord.js\src\client\websocket\packets\handlers\GuildCreate.js:13:31)
    at WebSocket.onMessage (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\node_modules\ws\lib\event-target.js:120:16)
    at WebSocket.emit (events.js:189:13)

Пожалуйста, помогите мне!

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

В результате вашей ошибки гильдия равна undefined .Я запустил код, и он работает, как и ожидалось.

module.exports.run = async (client, message, arguments) => {
   const guild = client.guilds.get("566596189827629066");
   setInterval(function () {
      var memberCount = guild.members.filter(member => !member.user.bot).size;  
      var memberCountChannel = client.channels.get("626462657817477131");
      memberCountChannel.setName(`${guild.name} has ${memberCount} members!`);
   }, 1000);
};

Изображение

Пожалуйста, дважды проверьте, что 394805546450026496 является действительной гильдиейидентификатор, а не идентификатор канала / идентификатор пользователя.Если это так, проверьте, находится ли бот в упомянутой гильдии.

Еще одна вещь, рекомендуется проверить, доступна ли гильдия перед выполнением операций или чтением данных из нее.Вы можете проверить это с помощью guild.available .

0 голосов
/ 25 сентября 2019

Похоже, когда вызывается функция guild.members.filter(member => !member.user.bot).size;, значение гильдии не определено.Вы уверены, что const guild = bot.guilds.get("394805546450026496"); правильно возвращает гильдию?Можете ли вы попробовать записать значение guild после вызова get?Я не вижу метод get(String id) в документации по discord.js.Вы пытались использовать рекомендуемые find()?

Попробуйте вместо этого.

const guild = bot.guilds.find(guild => {guild.id == "394805546450026496"});

...