Discord.js V14 Bot Ping CMD - discord.js

I am new to coding I was just making a simple ping command when I went to run it I got this error I have tried fixing it but I can't seem to find the problem please help me! I have been following this video (https://www.youtube.com/watch?v=6IgOXmQMT68&list=PLv0io0WjFNn9LDsv1W4fOWygNFzY342Jm&index=1).
ping.js:
const { SlashCommandBuilder } = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('ping')
.setDescription('Return my ping!'),
async execute(interaction, client) {
const messsage = await interaction.deferReply({
fetchReply: true
});
const newMessage = `API Latency: ${client.ws.ping}\nClient Ping: ${message.createdTimestamp - interaction.createdTimestamp}`
await interaction.editReply({
content: newMessage
});
}
}
handleEvents.js:
const fs = require("fs");
module.exports = (client) => {
client.handleEvents = async () => {
const eventFolders = fs.readdirSync(`./src/events`);
for (const folder of eventFolders) {
const eventFiles = fs
.readdirSync(`./src/events/${folder}`)
.filter((file) => file.endsWith(".js"));
switch (folder) {
case "client":
for (const file of eventFiles) {
const event = require(`../../events/${folder}/${file}`);
if (event.once)
client.once(event.name, (...args) =>
event.execute(...args, client)
);
else
client.on(event.name, (...args) =>
event.execute(...args, client)
);
}
break;
default:
break;
}
}
};
};
interactionCreate.js:
module.exports = {
name: "interactionCreate",
async execute(interaction, client) {
if (interaction.isChatInputCommand()) {
const { commands } = client;
const { commandName } = interaction;
const command = commands.get(commandName);
if (!command) return;
try {
await command.execute(interaction, client);
} catch (error) {
console.error(error);
await interaction.reply({
content: `Something went wrong while executing this command...`,
ephemeral: true,
});
}
}
},
};
Error:
TypeError: command.execute is not a function
at Object.execute (C:\Users\mikay\OneDrive\Desktop\v14 Bot\src\events\client\interactionCreate.js:11:23)
at Client.<anonymous> (C:\Users\mikay\OneDrive\Desktop\v14 Bot\src\functions\handlers\handleEvents.js:20:23)
at Client.emit (node:events:513:28)
at InteractionCreateAction.handle (C:\Users\mikay\OneDrive\Desktop\v14 Bot\node_modules\discord.js\src\client\actions\InteractionCreate.js:81:12)
at Object.module.exports [as INTERACTION_CREATE] (C:\Users\mikay\OneDrive\Desktop\v14 Bot\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36)
at WebSocketManager.handlePacket (C:\Users\mikay\OneDrive\Desktop\v14 Bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:352:31)
at WebSocketShard.onPacket (C:\Users\mikay\OneDrive\Desktop\v14 Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:480:22)
at WebSocketShard.onMessage (C:\Users\mikay\OneDrive\Desktop\v14 Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:320:10)
at WebSocket.onMessage (C:\Users\mikay\OneDrive\Desktop\v14 Bot\node_modules\ws\lib\event-target.js:199:18)
at WebSocket.emit (node:events:513:28)

Remove await on 11
commands.set(command.data.name, commands);
remove s from the last command

Related

TypeError: command.execute is not a function

I am aware that this problem has been discussed already, but I don't seem to fit the solutions found into my code. I've created some commands to this bot and they seem to work, although they are only basic slash commands (e.g. /ping). This problem came in when I try to run a moderation command or a play command.
This is the code with the error
const { Interaction } = require("discord.js");
module.exports = {
name: 'interactionCreate',
async execute(interaction, client) {
if (!interaction.isCommand()) return;
const command = client.commands.get(interaction.commandName);
if (!command) return
try{
await command.execute(interaction, client);
} catch (error) {
console.log(error);
await interaction.reply({
content: 'A aparut o eroare cu aceasta comanda!',
ephemeral: true
});
}
},
};
None of the fixes that I found seem to fit, at least to my rather unexperienced eye.
The command I try to run is this:
const { SlashCommandBuilder } = require("#discordjs/builders")
const { MessageEmbed } = require("discord.js")
const { QueryType } = require("discord-player")
module.exports = {
data: new SlashCommandBuilder()
.setName("play")
.setDescription("Asculta muzica")
.addSubcommand((subcommand)=>
subcommand
.setName("song")
.setDescription("Incarca o singura melodie printr-un url")
.addStringOption((option) => option.setName("url").setDescription("url-ul melodiei").setRequired(true)))
.addSubcommand((subcommand) =>
subcommand
.setName("playlist")
.setDescription("Incarca un playlist printr-un url")
.addStringOption((option) => option.setName("url").setDescription("url-ul playlist-ului").setRequired(true)))
.addSubcommand((subcommand) =>
subcommand
.setName("search")
.setDescription("Cauta o melodie pe baza cuvintelor-cheie")
.addStringOption((option) =>
option.setName("searchterms").setDescription("the search keywords").setRequired(true))),
run: async ({ client, interaction }) => {
if (interaction.member.voice.channel)
return interaction.editReply("Trebuie sa fii pe un voice channel pentru a folosi aceasta comanda!")
const queue = await client.player.createQueue(interaction.guild)
if (!queue.connection) await queue.connect(interaction.member.voice.channel)
let embed = new MessageEmbed()
if (interaction.options.getSubcommand() === "song"){
let url = interaction.options.getString("url")
const result = await client.player.search(url, {
requestedBy: interaction.user,
searchEngine: QueryType.YOUTUBE_VIDEO
})
if (result.tracks.length === 0)
return interaction.editReply("Niciun rezultat")
const song = result.tracks[0]
await queue.addTrack(song)
embed
.setDescription(`**[${song.title}](${song.url})**a fost adaugata`)
.setFooter({ text: `Durata: ${song.duration}`})
} else if (interaction.options.getSubcommand() === "playlist"){
let url = interaction.options.getString("url")
const result = await client.player.search(url, {
requestedBy: interaction.user,
searchEngine: QueryType.YOUTUBE_PLAYLIST
})
if (result.tracks.length === 0)
return interaction.editReply("Niciun rezultat")
const playlist = result.tracks
await queue.addTrack(result.tracks)
embed
.setDescription(`**${result.tracks.length} melodii din [${playlist.title}](${playlist.url})**a fost adaugata`)
.setFooter({ text: `Durata: ${playlist.duration}`})
} else if (interaction.options.getSubcommand() === "search"){
let url = interaction.options.getString("seatchterms")
const result = await client.player.search(url, {
requestedBy: interaction.user,
searchEngine: QueryType.AUTO
})
if (result.tracks.length === 0)
return interaction.editReply("Niciun rezultat")
const song = result.tracks[0]
await queue.addTrack(song)
embed
.setDescription(`**[${song.title}](${song.url})**a fost adaugata`)
.setFooter({ text: `Durata: ${song.duration}`})
}
if (!queue.playing) await queue.play()
await interaction.editReply({
embeds: [embed]
})
}
}
and the corresponding error:
TypeError: command.execute is not a function
at Object.execute (C:\Users\shelby\Bot\src\events\interactionCreate.js:15:27)
at Client.<anonymous> (C:\Users\shelby\Bot\src\functions\handelEvents.js:8:58)
at Client.emit (node:events:513:28)
at InteractionCreateAction.handle (C:\Users\shelby\Bot\node_modules\discord.js\src\client\actions\InteractionCreate.js:97:12)
at module.exports [as INTERACTION_CREATE] (C:\Users\shelby\Bot\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36)
at WebSocketManager.handlePacket (C:\Users\shelby\Bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:352:31)
at WebSocketShard.onPacket (C:\Users\shelby\Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:489:22)
at WebSocketShard.onMessage (C:\Users\shelby\Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:328:10)
at callListener (C:\Users\shelby\Bot\node_modules\ws\lib\event-target.js:290:14)
at WebSocket.onMessage (C:\Users\shelby\Bot\node_modules\ws\lib\event-target.js:209:9)
You should be using command.run() instead of command.execute(), as your exported Slash Command uses this property name to store the core function.
const { Interaction } = require("discord.js");
module.exports = {
name: 'interactionCreate',
async execute(interaction, client) {
if (!interaction.isCommand()) return;
const command = client.commands.get(interaction.commandName);
if (!command) return
try{
await command.run({ interaction, client });
} catch (error) {
console.log(error);
await interaction.reply({
content: 'A aparut o eroare cu aceasta comanda!',
ephemeral: true
});
}
},
};
Additionally, you have to use an object that contains your interaction and client to run the function instead of using two arguments.

How do I fix this error: "Error: Cannot find module './commands/info/status.js'" discordJS

hander "command.js"
const { readdirSync } = require('fs');
const ascii = require('ascii-table');
const client = require('..');
const { dir } = require('console');
const { config } = require('process');
let table = new ascii("Commands");
table.setHeading('Commands', 'Load');
module.exports = (client) => {
readdirSync('./commands/').forEach(dir => {
const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js"));
for(const file of commands) {
const pull = require(`./commands/${dir}/${file}`);
if (pull.name) {
client.commands.set(pull.name, pull);
slash.push(pull);
table.addRow(file, "OK");
}else {
table.addRow(file, 'Error - Missing a help.name or it is not a string...');
continue;
}if(pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name))
}
});
console.log(table.toString());
readdirSync('./events/').forEach((file) => {
const events = readdirSync('./events').filter((file) =>
file.endsWith('.js')
);
for (let file of events) {
let pull = require(`../events/${file}`);
if(pull.name) {
client.events.set(pull.name, pull)
}
}
console.log(`${file} Events load`);
})
}
event "messageCreate.js"
const { Embed, Collection } = require('discord.js')
const client = require('..');
const config = require('../setting/config.json');
const prefix_bot = config.prefix_bot;
client.on("messageCreste", async (message) => {
if(message.author.bot) return;
if(!message.content.startsWith(prefix_bot)) return;
if(!message.guild) return;
if(!message.member) message.member = await message.guild.fetchMember(message);
const args = message.content.slice(prefix_bot.length).trim().split(/ +/g);
const cmd = args.shift().toLowerCase();
if(cmd.length == 0) return;
let command = client.commands.get(cmd);
if(!command) command = client.commands.get(client.aliases.get(cmd));
if(command) command.run(client, message, args)
});
commands "status.js"
const { Embed, Collection } = require('discord.js')
const client = require('..');
const config = require('../setting/config.json');
const prefix_bot = config.prefix_bot;
client.on("messageCreste", async (message) => {
if(message.author.bot) return;
if(!message.content.startsWith(prefix_bot)) return;
if(!message.guild) return;
if(!message.member) message.member = await message.guild.fetchMember(message);
const args = message.content.slice(prefix_bot.length).trim().split(/ +/g);
const cmd = args.shift().toLowerCase();
if(cmd.length == 0) return;
let command = client.commands.get(cmd);
if(!command) command = client.commands.get(client.aliases.get(cmd));
if(command) command.run(client, message, args)
});
error
node:internal/modules/cjs/loader:936
throw err;
^
Error: Cannot find module './commands/info/status.js'
Require stack:
C:\Users\satang\Desktop\bot_node_satang\dis3\handler\command.js
C:\Users\satang\Desktop\bot_node_satang\dis3\index.js
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:94:18)
at C:\Users\satang\Desktop\bot_node_satang\dis3\handler\command.js:15:26
at Array.forEach ()
at module.exports (C:\Users\satang\Desktop\bot_node_satang\dis3\handler\command.js:12:32)
at C:\Users\satang\Desktop\bot_node_satang\dis3\index.js:68:34
at Array.forEach ()
at Object. (C:\Users\satang\Desktop\bot_node_satang\dis3\index.js:67:13) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'C:\Users\satang\Desktop\bot_node_satang\dis3\handler\command.js',
'C:\Users\satang\Desktop\bot_node_satang\dis3\index.js'
]
}
Can anyone find the error?
HELP ME PLESSS

Why im getting this error tho the cmd is fine? Cannot read properties of undefined (reading 'get')

DiscordJS context menu problem, like it says the cmd is running fine but when it does it shows the error of Cannot read properties of undefined (reading 'get') don't know why
Im getting this error on my events folder in discordjs v14 my content.js event
the error kept showing up though the context is still executed/working
I know i should be ignoring this error as long as the command is running good but it just annoying to my console and it doesn't look clean haha...
my context events:
module.exports = {
name: 'interactionCreate',
execute: async (interaction, client) => {
if (interaction.isContextMenuCommand()) {
const { command } = client;
const { commandName } = interaction;
const contextCommand = command.get(commandName);
if (!contextCommand) return;
try {
await contextCommand.execute(client, interaction)
} catch (e) {
console.log(e)
}
}
}
}
simple wave context
const { ApplicationCommandType, EmbedBuilder } = require("discord.js"); // packages
const superagent = require('superagent');
const ee = require('../../Config/embed.json');
module.exports = {
name: 'wave', // name of the command
// description: '', description of the command
developer: false, // false if the command is for public
type: ApplicationCommandType.User, // chatinput
cooldown: 3000, // cooldown of the commands
default_member_permissions: 'SendMessages', // discord perms
// options: [], options string
execute: async (client, interaction) => {
try {
let { body } = await superagent.get(`https://api.waifu.pics/sfw/wave`);
const embed = new EmbedBuilder()
.setColor(ee.color)
.setDescription(`Hey <#${interaction.targetUser.id}>!, <#${interaction.user.id}> just wave at you!`)
.setImage(body.url)
.setTimestamp()
.setFooter({ text: `${client.user.username} | waifumusic.ml` })
interaction.reply({ embeds: [embed] })
} catch (e) {
console.log(e)
}
}
}

'message.reply not defined' discord.js v13

So I'm creating a bot with a handler online, and I'm trying to send an embed through message.reply, but it comes and error saying 'reply' is not defined. Here is the code:
const { Discord, MessageEmbed } = require('discord.js')
module.exports = {
callback: async ({ client, message, ...args }) => {
const embed = new MessageEmbed()
.setAuthor({
name: 'ยป Ping',
iconURL: client.user.defaultAvatarURL
})
.setTitle('Calculating ping...')
.setColor('GREEN')
message.reply({
embeds: [embed]
})
}
}
And here is the handler:
const fs = require('fs')
const getFiles = require('./get-files')
module.exports = (client) => {
const commands = {}
const suffix = '.js'
const commandFiles = getFiles('./commands', suffix)
for (const command of commandFiles) {
let commandFile = require(command)
if (commandFile.default) commandFile = commandFile.default
const split = command.replace(/\\/g, '/').split('/')
const commandName = split[split.length - 1].replace(suffix, '')
commands[commandName.toLowerCase()] = commandFile
}
client.on('messageCreate', (message) => {
if (message.author.bot || !message.content.startsWith('!')) {
return
}
const args = message.content.slice(1).split(/ +/)
const commandName = args.shift().toLowerCase()
if (!commands[commandName]) {
return
}
try {
commands[commandName].callback(client, message, ...args)
} catch (err) {
console.error('[ERROR]', err)
}
})
}
I would appreciate if you found out.
Thanks!

TypeError: Cannot read property 'execute' of undefined / Embeds

When i'm doing a discord bot i have this problem client.commands.get('embed').execute(message, args, Discord);
^
TypeError: Cannot read property 'execute' of undefined
at Client. (C:\Users\anton\Desktop\Bot\index.js:29:37)
at Client.emit (node:events:376:20)
at MessageCreateAction.handle (C:\Users\anton\Desktop\Bot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (C:\Users\anton\Desktop\Bot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (C:\Users\anton\Desktop\Bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
at WebSocketShard.onPacket (C:\Users\anton\Desktop\Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
at WebSocketShard.onMessage (C:\Users\anton\Desktop\Bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
at WebSocket.onMessage (C:\Users\anton\Desktop\Bot\node_modules\ws\lib\event-target.js:132:16)
at WebSocket.emit (node:events:376:20)
at Receiver.receiverOnMessage (C:\Users\anton\Desktop\Bot\node_modules\ws\lib\websocket.js:825:20)
This is the code :
const client = new Discord.Client();
const prefix = ',';
const fs = require('fs');
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);
}
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
client.user.setActivity('this awesome server', { type: 'WATCHING'}).catch(console.error);
});
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(command === 'embed'){
client.commands.get('embed').execute(message, args, Discord);
}
if(command === 'version'){
client.commands.get('version').execute(message, args);
}
});
client.login('My token');```
And the command code:
module.exports = {
name: 'version',
description: "this is the version command",
execute(message, args, Discord){
const exampleEmbed = new Discord.MessageEmbed()
.setColor('#e62e1e')
.setTitle('Leon')
.setDescription('Almost Finished')
.addFields(
{ name: 'Regular field title', value: 'Some value here' },
{ name: '\u200B', value: '\u200B' },
{ name: 'Something', value: 'Nothing', inline: true },
{ name: 'Something', value: 'Nothing', inline: true },
)
.setTimestamp()
.setFooter('See Leon');
message.channel.send(exampleEmbed)
}
}
It seems that you didn't import discord.js.
This is how to do it: place this at the very top:
const Discord = require('discord.js');

Resources