You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Haha-Yes/event/listeners/error.js

62 lines
1.8 KiB
JavaScript

const { Listener } = require('discord-akairo');
const mkdirp = require('mkdirp');
const fs = require('fs');
const { errorChannel } = require('../../config.json');
class errorListener extends Listener {
constructor() {
super('error', {
emitter: 'commandHandler',
event: 'error'
});
}
async exec(error, message, command) {
console.error(`Error happened on the command: ${command.id}\n${error}\nOn the message: ${message}`);
const channel = this.client.channels.resolve(errorChannel);
const errorEmbed = this.client.util.embed()
.setColor('RED')
.setTitle('Shit happened!')
.addField('Command', command.id, true)
.addField('Error', error, true)
.addField('Message', message, true);
if (message.author) errorEmbed.addField('Author', `${message.author.tag} (${message.author.id})`);
if (message.guild) errorEmbed.addField('Guild', `${message.guild.name} (${message.guild.id})`);
channel.send(errorEmbed);
//Get current date
let today = new Date();
let dd = today.getDate();
let mm = today.getMonth() + 1; //January is 0!
let yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd;
}
if (mm < 10) {
mm = '0' + mm;
}
today = dd + '/' + mm + '/' + yyyy;
//Get current hour
let time = new Date();
let currentTime = time.getHours() + '_' + time.getMinutes() + '_' + time.getSeconds();
//Create folder with current date
mkdirp(`./error/${today}`, function (err){
if (err) {
console.error(err);
}
//Create txt with the current time
fs.writeFile(`./error/${today}/${currentTime}.txt`, `Error happenend on the command: ${command.id}\n${error}\nOn the message: ${message}`, function (err) {
if (err) {
console.error(err);
}
console.log(`Logged error succesfully in /error/${today}/${currentTime}.txt`);
});
});
}
}
module.exports = errorListener;