ItamarD
ItamarD

Reputation: 39

Number of roles and emojis. Discord.js

I want to make a serverinfo command for my discord bot, and I want to make a field that displays the number of the roles and another for the emojis. Can someone tell me how to do it?

This is my code:

async runCommand(args: string[], msgObject: Discord.Message, client: Discord.Client): Promise<void> {

        let embed = new Discord.RichEmbed()
            .setColor("RANDOM")
            .setTitle("Server Info")
            .setImage(msgObject.guild.iconURL)
            .setDescription(`${msgObject.guild}'s information`)
            .addField("Owner", `The owner of this server is ${msgObject.guild.owner}`)
            .addField("Member Count", `This server has ${msgObject.guild.memberCount} members`)
            .addField("Emoji Count", `This server has ${msgObject.guild.emojis} emojis`)
            .addField("Roles Count", `This server has ${msgObject.guild.roles} roles`)

        msgObject.channel.send(embed)
            .catch(console.error);
}

The code gives me this:

Server Info

Test Server's information

Owner

The owner of this server is @ItamarD

Member Count This server has 3 members

Emoji Count

This server has [object Map] emojis

Roles Count

This server has [object Map] roles

Upvotes: 1

Views: 4423

Answers (3)

Ravage
Ravage

Reputation: 1

Just use

if(message.content.startsWith(":serveurinfo")) {
        let si = new Discord.MessageEmbed()
        .setColor("RANDOM")
        .setTitle("Server Info")
        .setDescription(`${message.guild.name}'s information`)
        .addField("Owner", `The owner of this server is ${message.guild.owner}`)
        .addField("Member Count", `This server has ${message.guild.memberCount} members`)
        .addField("Emoji Count", `This server has ${message.guild.emojis.cache.size} emojis`)
        .addField("Roles Count", `This server has ${message.guild.roles.cache.size} roles`)

    message.channel.send(si);

    }

Upvotes: 0

Roys
Roys

Reputation: 1

that my code:

if(message.content.startsWith(":serveurinfo")) {
        let si = new Discord.MessageEmbed()
        .setColor("RANDOM")
        .setTitle("Server Info")
        .setDescription(`${message.guild.name}'s information`)
        .addField("Owner", `The owner of this server is ${message.guild.owner}`)
        .addField("Member Count", `This server has ${message.guild.memberCount} members`)
        .addField("Emoji Count", `This server has ${message.guild.emojis.size} emojis`)
        .addField("Roles Count", `This server has ${message.guild.roles.size} roles`)

    message.channel.send(si);

    }

And for emoji and roles, the answer is: This server has undefined emojis and This server has undefined roles

Upvotes: 0

Tarazed
Tarazed

Reputation: 2675

If you take a look at the Discord.js API documentation for Guild objects you will notice that Guild.emojis and Guild.roles returns a Collection.

The Collection is an extension of Map which has a convenient size property you can use.

The resulting 2 lines code would be:

.addField("Emoji Count", `This server has ${msgObject.guild.emojis.size} emojis`)
.addField("Roles Count", `This server has ${msgObject.guild.roles.size} roles`)

Upvotes: 3

Related Questions