1
0
mirror of https://github.com/musix-org/musix-oss synced 2024-12-23 06:43:17 +00:00

additional error logging and debugging.

This commit is contained in:
MatteZ02 2020-06-22 00:41:30 +03:00
parent 70316495f5
commit 2d7752d2cf
18 changed files with 126 additions and 87 deletions

View File

@ -7,7 +7,9 @@ if (config.devMode) {
config.shards = 1; config.shards = 1;
} }
const { ShardingManager } = require("discord.js"); const {
ShardingManager
} = require("discord.js");
const manager = new ShardingManager("./src/bot.js", { const manager = new ShardingManager("./src/bot.js", {
token: config.token, token: config.token,
respawn: config.respawn, respawn: config.respawn,
@ -28,3 +30,9 @@ console.log = function (arg) {
oldConsole.log(arg); oldConsole.log(arg);
if (!config.devMode) webhookClient.send(arg); if (!config.devMode) webhookClient.send(arg);
}; };
oldConsole.error = console.error;
console.error = function (arg) {
oldConsole.error(arg);
if (!client.config.devMode) webhookClient.send(arg);
};

View File

@ -9,3 +9,9 @@ console.log = function (arg) {
oldConsole.log(arg); oldConsole.log(arg);
if (!client.config.devMode) webhookClient.send(arg); if (!client.config.devMode) webhookClient.send(arg);
}; };
oldConsole.error = console.error;
console.error = function (arg) {
oldConsole.error(arg);
if (!client.config.devMode) webhookClient.send(arg);
};

View File

@ -17,7 +17,7 @@ module.exports = {
msg.channel.send(`${client.messages.joined} ${voiceChannel.name}!`); msg.channel.send(`${client.messages.joined} ${voiceChannel.name}!`);
} catch (error) { } catch (error) {
client.queue.delete(msg.guild.id); client.queue.delete(msg.guild.id);
client.users.cache.get(client.config.devId).send(client.messages.errorConnecting + error); console.log(error);
return msg.channel.send(client.messages.error); return msg.channel.send(client.messages.error);
} }
} }

View File

@ -68,15 +68,8 @@ module.exports = {
option.execute(msg, args, client); option.execute(msg, args, client);
} catch (error) { } catch (error) {
msg.reply(client.messages.errorExeOpt); msg.reply(client.messages.errorExeOpt);
const embed = new Discord.MessageEmbed() console.log(error.toString());
.setTitle(`Musix ${error.toString()}`) console.log(error.stack.replace(/at /g, "**at **"));
.setDescription(error.stack.replace(/at /g, "**at **"))
.setColor(client.config.embedColor);
client
.fetchUser(client.config.devId)
.then((user) => user.send(embed))
.catch(console.error);
client.users.cache.get(client.config.devId).send(embed);
} }
} else { } else {
return msg.channel.send(embed); return msg.channel.send(embed);

View File

@ -16,7 +16,9 @@ module.exports = {
name: 'DJ', name: 'DJ',
}) })
.then(role => client.global.db.guilds[msg.guild.id].djrole = role.id) .then(role => client.global.db.guilds[msg.guild.id].djrole = role.id)
.catch(console.error) .catch((error) => {
console.log(error);
})
client.global.db.guilds[msg.guild.id].dj = true; client.global.db.guilds[msg.guild.id].dj = true;
msg.channel.send(client.messages.djRoleCreated); msg.channel.send(client.messages.djRoleCreated);
} }

View File

@ -0,0 +1,33 @@
module.exports = function (client) {
const Discord = require('discord.js');
client.on('ready', () => {
require(`./ready.js`).execute(client, Discord);
}).on('message', (msg) => {
require(`./msg.js`).execute(client, msg, Discord);
}).on('guildCreate', (guild) => {
require(`./guildCreate.js`).execute(client, guild);
}).on('voiceStateUpdate', (oldState, newState) => {
require(`./voiceStateUpdate.js`).execute(client, oldState, newState);
}).on('error', (error) => {
console.log(error);
}).on('debug', (info) => {
if (client.config.devMode) console.log(info);
}).on('invalidated', () => {
console.log("Client session invalidated! Exiting the process!")
process.exit(1);
}).on('rateLimit', (rateLimitInfo) => {
}).on('shardDisconnect', (event, id) => {
console.log(`Shard ${id} disconnected event ${event}`);
}).on('shardError', (error, shardId) => {
console.log(`Shard ${shardId} error ${error}`);
}).on('shardReady', (id, unavailableGuilds) => {
console.log(`Shard ${id} ready. Unavailable guilds: ${unavailableGuilds || 0}`);
}).on('shardReconnecting', (id) => {
console.log(`shard ${id} reconnecting.`);
}).on('shardResume', (id, replayedEvents) => {
console.log(`shard ${id} resume events ${replayedEvents}`);
}).on("warn", (info) => {
console.log(`Warn! info: ${info}`);
});
}

View File

@ -0,0 +1,21 @@
module.exports = function (client, connection) {
connection.on("authenticated", () => {
if (client.config.devMode) console.log("Voice connection initiated.");
}).on("debug", (message) => {
if (client.config.devMode) console.log(message);
}).on("disconnect", () => {
if (client.config.devMode) console.log("Voice connection disconnected.");
}).on("error", (error) => {
console.log(error);
}).on("failed", (error) => {
if (client.config.devMode) console.log(error);
}).on("newSession", () => {
if (client.config.devMode) console.log("New voice session id received!");
}).on("ready", () => {
if (client.config.devMode) console.log("Voice connection ready.");
}).on("reconnecting", () => {
if (client.config.devMode) console.log("Voice connection reconnecting.");
}).on("warn", (warning) => {
console.log(`Voice connection warning: ${warning}`);
})
}

View File

@ -1,12 +1,11 @@
module.exports = async function (client, error, guild) { module.exports = async function (client, error, guild) {
const queue = client.queue.get(guild.id); const queue = client.queue.get(guild.id);
console.error(error); console.log(error);
/*if (error = "Error: input stream: This video contains content from WMG, who has blocked it on copyright grounds.") { /*if (error = "Error: input stream: This video contains content from WMG, who has blocked it on copyright grounds.") {
queue.endReason = "skip"; queue.endReason = "skip";
queue.connection.dispatcher.end(); queue.connection.dispatcher.end();
return queue.textChannel.send(client.messages.songBlockedWMG); return queue.textChannel.send(client.messages.songBlockedWMG);
}*/ }*/
client.users.cache.get(client.config.devId).send(client.messages.dispatcherError + error);
queue.voiceChannel.leave(); queue.voiceChannel.leave();
client.queue.delete(guild.id); client.queue.delete(guild.id);
return queue.textChannel.send(client.messages.errorDispatcher + `\`${error}\``); return queue.textChannel.send(client.messages.errorDispatcher + `\`${error}\``);

View File

@ -1,7 +1,8 @@
module.exports = async function (client, reason, guild) { module.exports = {
async execute(client, guild) {
const queue = client.queue.get(guild.id); const queue = client.queue.get(guild.id);
queue.playing = false; queue.playing = false;
if (reason === "seek") { if (queue.endReason === "seek") {
return (queue.playing = true); return (queue.playing = true);
} }
@ -13,10 +14,11 @@ module.exports = async function (client, reason, guild) {
queue.time = 0; queue.time = 0;
queue.votes = 0; queue.votes = 0;
queue.voters = []; queue.voters = [];
if (reason !== "replay") { if (queue.endReason !== "replay") {
if (reason === "previous") queue.songs.unshift(queue.prevSongs.pop()) if (queue.endReason === "previous") queue.songs.unshift(queue.prevSongs.pop())
if (reason !== "previous") queue.prevSongs.push(queue.songs.shift()); if (queue.endReason !== "previous") queue.prevSongs.push(queue.songs.shift());
} }
} }
client.funcs.play(guild, queue.songs[0], client, 0, true); client.funcs.play(guild, queue.songs[0], client, 0, true);
},
}; };

View File

@ -0,0 +1,16 @@
module.exports = function (client, dispatcher, queue, guild) {
dispatcher.on("finish", () => {
if (client.config.devMode) console.log("Dispatcher finish.");
require("./finish").execute(client, guild);
})
.on("start", () => {
if (client.config.devMode) console.log("Dispatcher start.");
queue.endReason = null;
dispatcher.player.streamingData.pausedTime = 0;
})
.on("error", (error) => {
require("./error").execute(client, error, guild);
}).on("debug", (info) => {
if (client.config.devMode) console.log(info);
})
}

View File

@ -1,19 +0,0 @@
module.exports = function (client) {
const Discord = require('discord.js');
const events = './clientEvents/';
client.on('ready', () => {
require(`${events}ready.js`).execute(client, Discord);
});
client.on('message', (msg) => {
require(`${events}msg.js`).execute(client, msg, Discord);
});
client.on('guildCreate', (guild) => {
require(`${events}guildCreate.js`).execute(client, guild);
});
client.on('voiceStateUpdate', (oldState, newState) => {
require(`${events}voiceStateUpdate.js`).execute(client, oldState, newState);
});
client.on('error', (error) => {
client.channels.fetch(client.config.debug_channel).send(`Error: ${error} on shard: ${client.shard}`);
});
}

View File

@ -7,7 +7,6 @@ const admin = require("firebase-admin");
const serviceAccount = require("./config/serviceAccount.json"); const serviceAccount = require("./config/serviceAccount.json");
const fs = require("fs"); const fs = require("fs");
const path = require("path"); const path = require("path");
const events = require("../events/events.js");
const myIntents = new Intents(); const myIntents = new Intents();
myIntents.add( myIntents.add(
@ -39,8 +38,6 @@ module.exports = class extends Client {
this.messages = require("./config/messages.js"); this.messages = require("./config/messages.js");
this.db = admin.firestore(); this.db = admin.firestore();
this.db.FieldValue = require("firebase-admin").firestore.FieldValue; this.db.FieldValue = require("firebase-admin").firestore.FieldValue;
this.dispatcher.finish = require("../events/dispatcherEvents/finish.js");
this.dispatcher.error = require("../events/dispatcherEvents/error.js");
this.global = { this.global = {
db: { db: {
guilds: {}, guilds: {},
@ -71,7 +68,7 @@ module.exports = class extends Client {
this.config.token = this.config.devToken; this.config.token = this.config.devToken;
} }
events(this); require("../events/clientEvents/handler.js")(this);
this.login(this.config.token).catch((err) => this.login(this.config.token).catch((err) =>
console.log("Failed to login: " + err) console.log("Failed to login: " + err)

View File

@ -24,7 +24,7 @@ module.exports = {
embedColor: "#b50002", embedColor: "#b50002",
invite: "https://discordapp.com/oauth2/authorize?client_id=607266889537945605&permissions=3427328&scope=bot", invite: "https://discordapp.com/oauth2/authorize?client_id=607266889537945605&permissions=3427328&scope=bot",
supportServer: "https://discord.gg/rvHuJtB", supportServer: "https://discord.gg/rvHuJtB",
devMode: false, devMode: true,
api: false, api: false,
saveDB: true, saveDB: true,
respawn: true, respawn: true,

View File

@ -13,16 +13,8 @@ module.exports = function (msg, args, client, Discord, command) {
command.uses++; command.uses++;
command.execute(msg, args, client, Discord, command); command.execute(msg, args, client, Discord, command);
} catch (error) { } catch (error) {
const date = new Date();
msg.reply(client.messages.errorExe); msg.reply(client.messages.errorExe);
const embed = new Discord.MessageEmbed() console.log(error.toString());
.setTitle(`Musix ${error.toString()}`) console.log(error.stack.replace(/at /g, "**at **"));
.setDescription(error.stack.replace(/at /g, "**at **"))
.setFooter(
`guild: ${msg.guild.id} (${msg.guild.name}), user: ${msg.member.id} (${msg.member.displayName}), channel: ${msg.channel.id} (${msg.channel.name}), date: ${date}, Shard: ${client.shard.ids}`
)
.setColor("#b50002");
client.users.cache.get(client.config.devId).send(embed);
console.error(error);
} }
}; };

View File

@ -4,6 +4,6 @@ module.exports = async function (client) {
await client.channels.fetch(client.config.secondary_test_channel) await client.channels.fetch(client.config.secondary_test_channel)
.then(x => x.join()); .then(x => x.join());
} catch (error) { } catch (error) {
client.users.cache.get(client.config.devId).send(client.messages.errorDetected + error); console.log(error);
} }
}; };

View File

@ -57,12 +57,11 @@ module.exports = async function (
try { try {
const connection = await voiceChannel.join(); const connection = await voiceChannel.join();
construct.connection = connection; construct.connection = connection;
require("../../events/connectionEvents/handler")(client, connection);
client.funcs.play(msg.guild, construct.songs[0], client, 0, true); client.funcs.play(msg.guild, construct.songs[0], client, 0, true);
} catch (error) { } catch (error) {
client.queue.delete(msg.guild.id); client.queue.delete(msg.guild.id);
client.users.cache console.log(error);
.get(client.config.devId)
.send(client.messages.errorConnecting + error);
return msg.channel.send(client.messages.error + error); return msg.channel.send(client.messages.error + error);
} }
return; return;

View File

@ -30,7 +30,7 @@ module.exports = async function (guild, song, client, seek, play) {
if (song.type === "ytdl") if (song.type === "ytdl")
input = ytdl(song.url, streamConfig.ytdlOptions) input = ytdl(song.url, streamConfig.ytdlOptions)
//.on('info', (info, format) => console.log(format)) //.on('info', (info, format) => console.log(format))
.on("error", (err) => console.log(err)); .on("error", (error) => console.log(error));
const ffmpegArgs = [ const ffmpegArgs = [
"-analyzeduration", "-analyzeduration",
@ -65,19 +65,9 @@ module.exports = async function (guild, song, client, seek, play) {
console.log(error); console.log(error);
}); });
const dispatcher = queue.connection const dispatcher = queue.connection.play(stream, streamConfig.options)
.play(stream, streamConfig.options)
.on("finish", () => {
client.dispatcher.finish(client, queue.endReason, guild);
})
.on("start", () => {
queue.endReason = null;
dispatcher.player.streamingData.pausedTime = 0;
})
.on("error", (error) => {
client.dispatcher.error(client, error, guild);
});
dispatcher.setVolume(queue.volume / 100); dispatcher.setVolume(queue.volume / 100);
require("../../events/dispatcherEvents/handler")(client, dispatcher, queue, guild);
if ((client.global.db.guilds[guild.id].startPlaying && play) || play) { if ((client.global.db.guilds[guild.id].startPlaying && play) || play) {
if (song.type !== "ytdl") return; if (song.type !== "ytdl") return;
const embed = new Discord.MessageEmbed() const embed = new Discord.MessageEmbed()

View File

@ -2,7 +2,7 @@ module.exports = function (a) {
for (let i = a.length - 1; i > 1; i--) { for (let i = a.length - 1; i > 1; i--) {
const j = Math.floor(Math.random() * (i + 1)); const j = Math.floor(Math.random() * (i + 1));
if (i === 0 || j === 0) { if (i === 0 || j === 0) {
console.log(`J or I is 0. I: ${i} J: ${j}`); // J or I is 0. It works like this so hands off!
} else { } else {
[a[i], a[j]] = [a[j], a[i]]; [a[i], a[j]] = [a[j], a[i]];
} }