Reputation: 39
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
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
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
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