EDIT: big shout out to the guys who are helping with feedback, still very new to the scene, but just so fascinated by it so i keep trying. i have enabled a new command handler and it seemed to have just jacked up everything i have. its kind of a general problem throughout my code but if i can get help with this command i will be able to fix it all.
i am currently having a problem with my delete command. it works, but it throws errors and im missing something obvious. any help is greatly appreciated. i seem to have a problem with not defining what i want it to do, it used to work flawlessly when i had a basic command haandler, but i have since moved on to a cleaner one and i know i'm just missing something obvious. damn near wrecked the entire code trying to figure it out
The error is:
TypeError: Cannot read property 'send' of undefined at Object.execute (C:\Users\Admin\Desktop\discord bot\commands\delete.js:9:56) at module.exports (C:\Users\Admin\Desktop\discord bot\events\guild\message.js:17:17) at Client.emit (events.js:315:20) at MessageCreateAction.handle (C:\Users\Admin\Desktop\discord bot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14) at Object.module.exports [as MESSAGE_CREATE] (C:\Users\Admin\Desktop\discord bot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32) at WebSocketManager.handlePacket (C:\Users\Admin\Desktop\discord bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31) at WebSocketShard.onPacket (C:\Users\Admin\Desktop\discord bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22) at WebSocketShard.onMessage (C:\Users\Admin\Desktop\discord bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10) at WebSocket.onMessage (C:\Users\Admin\Desktop\discord bot\node_modules\ws\lib\event-target.js:132:16) at WebSocket.emit (events.js:315:20)
main.js
const Discord = require('discord.js');
require('dotenv').config();
const client = new Discord.Client({ partials: ["MESSAGE", "CHANNEL", "REACTION"] });
const fs = require('fs');
client.commands = new Discord.Collection();
client.events = new Discord.Collection();
['command_handler', 'event_handler'].forEach(handler =>{
require(`./handlers/${handler}`)(client, Discord)
})
client.login(process.env.DISCORD_TOKEN);
COMMAND HANDLER
const fs = require('fs');
module.exports = (client, Discord) =>{
const command_files = fs.readdirSync('./commands/').filter(file => file.endsWith('js'))
for(const file of command_files){
const command = require(`../commands/${file}`);
if(command.name){
client.commands.set(command.name, command);
} else {
continue;
}
}
}
I THINK THIS IS MY EXECUTE COMMAND. also known as my message.js
require('dotenv').config();
module.exports = (Discord, client, message) => {
const prefix = process.env.PREFIX;
const send = require ('discord.js');
if(!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
const cmd = args.shift().toLowerCase();
const command = client.commands.get(cmd) ||
client.commands.find(a => a.aliases && a.aliases.includes(cmd));
if(command) command.execute(client, message, args, Discord);
try {
command.execute(message, args, cmd, client, Discord);
} catch (err) {
message.reply("whoops, shit got fuckity on my backend");
console.log(err);
}
}
DELETE COMMAND
const message = require("../events/guild/message");
module.exports = {
name: 'delete',
description: "delete messages",
execute(client, message, args, Discord) {
try {
if (!args[0]) return message.channel.send("type a number with the command doofus");
if (isNaN(args[0])) return message.channel.send("bruh enter a real number");
if (args[0] > 100) return message.channel.send("way too much");
if (args[0] < 1) return message.channel.send("stop tryna be a funny guy")
return message.channel.messages.fetch({ limit: args[0] }).then(messages => {
message.channel.bulkDelete(messages);
message.channel.send("you saw nothing");
})
} catch (err) {
console.log(err);
}
}
}
async execute(client, message, args, Discord)
should be non-async, withreturn message.channel.messages.fetch(...)
instead ofawait message.channel.messages.fetch(...)
. – Tomalakmessage.channel
is undefined, which would mean thatmessage
probably is not what you think it is. – TomalakUnhandledPromiseRejectionWarning
comes from the missingtry/catch
in your delete command. In order to at least keep the bot from crashing, wrap the function body in atry/catch
block and dump any errors to console. – Tomalak