Функция подсчета членов роли - PullRequest
0 голосов
/ 27 мая 2020

Я создал функцию, которая должна возвращать количество членов роли, но возвращает «undefined».

Вот мой код:

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('message', (message) => {
    argument = message.content.split(' ');
    switch (argument[0]) {
        case 'showmember':
          let membercount = (therole) => {
            let role = message.guild.roles.cache.find(r => r.name === therole);
            message.guild.members.fetch().then(fetched => {
              let total = fetched.filter(m => m.roles.cache.some(r => r === role));
              return total.length;
            });
          };
          message.channel.send(membercount(argument.join(',').slice('showmember'.length)));
        break;
    }
}

Это то, что он говорит на консоли (node:133436) UnhandledPromiseRejectionWarning: DiscordAPIError: Cannot send an empty message

1 Ответ

2 голосов
/ 27 мая 2020

Причина, по которой он возвращает «undefined», заключается в том, что .fetch () является обещанием и, следовательно, ваша функция с именем membercount не возвращает значение немедленно. Фактически, membercount даже не возвращает значения. Вы можете обратиться к Return из обещания then () , чтобы узнать, почему. Решением этой проблемы является замена return total.length на message.channel.send(total.length).

Кроме того, я должен указать, что message.content.slice('showmember'.length) будет пустой строкой. Проблема заключается в вашем операторе switch switch (message.content), потому что ваш оператор case будет искать точное совпадение message.content === 'showmember'. Вместо этого вы хотите проверить, начинается ли message.content с «showmember». Я рекомендую заменить оператор switch-case на if(message.content.startsWith('showmember') или что-то подобное logi c.

...