Reputation: 9
I'm making a discord bot and I want to add a server info command, when I run the command it gave me an error message "Command.execute is not an function","message create actio center","Object.module.exports [as MESSAGE_CREATE]".
Here is my code:
const { MessageEmbed } = require('discord.js');
const moment = require('moment');
const filterLevels = {
DISABLED: 'Off',
MEMBERS_WITHOUT_ROLES: 'No Role',
ALL_MEMBERS: 'Everyone'
};
const verificationLevels = {
NONE: 'None',
LOW: 'Low',
MEDIUM: 'Medium',
HIGH: '(╯°□°)╯︵ ┻━┻',
VERY_HIGH: '┻━┻ ミヽ(ಠ益ಠ)ノ彡┻━┻'
};
const regions = {
brazil: 'Brazil',
europe: 'Europe',
hongkong: 'Hong Kong',
india: 'India',
japan: 'Japan',
russia: 'Russia',
singapore: 'Singapore',
southafrica: 'South Africa',
sydeny: 'Sydeny',
'us-central': 'US Central',
'us-east': 'US East',
'us-west': 'US West',
'us-south': 'US South'
};
module.exports = {
name: 'server',
aliases: [],
description: 'server info...',
cooldown: 5,
guildOnly: false,
args: false,
run: async (client, message, args) => {
const roles = message.guild.roles.cache.sort((a, b) => b.position - a.position).map(role => role.toString());
const members = message.guild.members.cache;
const channels = message.guild.channels.cache;
const emojis = message.guild.emojis.cache;
const embed = new MessageEmbed()
.setDescription(`**Server Info**`)
.setColor('BLACK')
.setThumbnail(message.guild.iconURL({ dynamic: true }))
.addField('General', [
`**Name:** ${message.guild.name}`,
`**ID:** ${message.guild.id}`,
`**Owner:** ${message.guild.owner.user.tag} (${message.guild.ownerID})`,
`**Region:** ${regions[message.guild.region]}`,
`**Boost Tier:** ${message.guild.premiumTier ? `Tier ${message.guild.premiumTier}` : 'None'}`,
`**Explicit Filter:** ${filterLevels[message.guild.explicitContentFilter]}`,
`**Verification Level:** ${verificationLevels[message.guild.verificationLevel]}`,
`**Time Created:** ${moment(message.guild.createdTimestamp).format('LT')} ${moment(message.guild.createdTimestamp).format('LL')} [${moment(message.guild.createdTimestamp).fromNow()}]`,
'\u200b'
])
.addField('Statistics', [
`**Role Count:** ${roles.length}`,
`**Emoji Count:** ${emojis.size}`,
`**Regular Emoji Count:** ${emojis.filter(emoji => !emoji.animated).size}`,
`**Animated Emoji Count:** ${emojis.filter(emoji => emoji.animated).size}`,
`**Member Count:** ${message.guild.memberCount}`,
`**Humans:** ${members.filter(member => !member.user.bot).size}`,
`**Bots:** ${members.filter(member => member.user.bot).size}`,
`**Text Channels:** ${channels.filter(channel => channel.type === 'text').size}`,
`**Voice Channels:** ${channels.filter(channel => channel.type === 'voice').size}`,
`**Boost Count:** ${message.guild.premiumSubscriptionCount || '0'}`,
'\u200b'
])
.addField('Presence', [
`**Online:** ${members.filter(member => member.presence.status === 'online').size}`,
`**Idle:** ${members.filter(member => member.presence.status === 'idle').size}`,
`**Do Not Disturb:** ${members.filter(member => member.presence.status === 'dnd').size}`,
`**Offline:** ${members.filter(member => member.presence.status === 'offline').size}`,
'\u200b'
])
.addField(`Roles [${roles.length - 1}]`, roles.join(', '))
.setTimestamp();
message.channel.send(embed);
}
}
I don't really know how to fix it since I'm pretty new to JavaScript.
Upvotes: 0
Views: 10313
Reputation: 378
I believe the error is in your command handle. In your command handler, you get the command, then you try to do Command.execute(client, message, args)
. That would be fine, but in your command that you just shared, the function is called run
not execute
.
If it's called run in all of your commands, just change the command handle to be Command.run(client, message args);
, but if its just the server info command just change the function's name from run to execute. Hope that helped.
Upvotes: 1