Pracuję nad botem dla mojej niezgody i mam niewielką czkawkę w pliku guild.js. Polecenie działa, ale nie zgodnie z przeznaczeniem.

Próbuję oddzielić użytkowników botów i użytkowników niebędących botami w moim guild.js Rich Embed. Jak dotąd wyświetla listę wszystkich użytkowników bez oddzielania ich i umieszczania undefined w polu Bots.

Oto mój plik guild.js:

const Discord = require('discord.js')

module.exports = {
    name: 'guild',
    description: 'Get info on the server.',
    execute(message) {
            console.log("embedding")


            const embed = new Discord.RichEmbed()
            .setTitle("Guild Details")
            .setColor(0x00AE86)
            .setFooter("Guardian", "https://i.imgur.com/jifYK6s.png")
            .setThumbnail("https://i.imgur.com/jifYK6s.png")
            .setTimestamp()
            .setURL("https://newgitlab.elaztek.com/phantomdev/guardian")
            .addField("Guild",
            (`${message.guild.name}`), true)
            .addField("Members",
            (`${message.guild.memberCount}`), true)
                .addField("Bots",
            (`${message.guild.botCount}`), true)
    message.channel.send({embed});
}};

Moje message.js i index.js można znaleźć poniżej.

To jest moje message.js:

const { prefix } = require('./prefix.json');

module.exports = {
    name: 'message',
    description: 'client message event.',
    execute:function(client) {
        client.on('message',message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;

    const args = message.content.slice(prefix.length).split(/ +/);
    const command = args.shift().toLowerCase();
        if (!client.commands.has(command)) return;

        try {
            client.commands.get(command).execute(message, args);
            } catch (error) {
                console.error(error);
                message.reply('there was an error trying to execute that command!');
                }
})

}};

To jest moje index.js

const fs = require('fs');
const Discord = require('discord.js');
const client = new Discord.Client();
const { token } = require('./token.json');

client.commands = new Discord.Collection();

const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));

for (const file of commandFiles) {
    const command = require(`./commands/${file}`);
    client.commands.set(command.name, command);
    console.log(file,command)
}

fs.readdir('./events/', (err, files) => {
    if (err) return console.error(err);
    files.forEach(file => {
        if(!file.endsWith('.js')) return;
        const eventFunction = require(`./events/${file}`);
        console.log(eventFunction)
        eventFunction.execute(client)
    });
});

client.login(token);

Każda pomoc byłaby bardzo mile widziana.

0
Nimbi 17 grudzień 2019, 01:47

1 odpowiedź

Najlepsza odpowiedź

Klasa Guild nie ma właściwości botCount, więc musisz użyć innego sposobu:

.addField("Members",
(`${message.guild.members.filter((m) => !m.user.bot).size}`), true)
.addField("Bots",
(`${message.guild.members.filter((m) => m.user.bot).size}`), true)

Pierwszy filtr pobiera wszystkich członków, którzy nie są botami, i zwraca rozmiar, a drugie pole robi odwrotnie, pobiera wszystkich członków, którzy są botami, i zwraca rozmiar.

0
Androz2091 18 grudzień 2019, 12:47