fix(Player): handle emitted errors by default

This commit is contained in:
DevAndromeda 2021-11-28 14:10:27 +05:45
parent 77d2eeeffe
commit 3185557833

View file

@ -29,6 +29,7 @@ class Player extends EventEmitter<PlayerEvents> {
public readonly queues = new Collection<Snowflake, Queue>(); public readonly queues = new Collection<Snowflake, Queue>();
public readonly voiceUtils = new VoiceUtils(); public readonly voiceUtils = new VoiceUtils();
public readonly extractors = new Collection<string, ExtractorModel>(); public readonly extractors = new Collection<string, ExtractorModel>();
public requiredEvents = ["error", "connectionError"] as string[];
/** /**
* Creates new Discord Player * Creates new Discord Player
@ -552,12 +553,25 @@ class Player extends EventEmitter<PlayerEvents> {
scanDeps() { scanDeps() {
const line = "-".repeat(50); const line = "-".repeat(50);
const depsReport = generateDependencyReport(); const depsReport = generateDependencyReport();
const extractorReport = this.extractors.map((m) => { const extractorReport = this.extractors
.map((m) => {
return `${m.name} :: ${m.version || "0.1.0"}`; return `${m.name} :: ${m.version || "0.1.0"}`;
}).join("\n"); })
.join("\n");
return `${depsReport}\n${line}\nLoaded Extractors:\n${extractorReport || "None"}`; return `${depsReport}\n${line}\nLoaded Extractors:\n${extractorReport || "None"}`;
} }
emit<U extends keyof PlayerEvents>(eventName: U, ...args: Parameters<PlayerEvents[U]>): boolean {
if (this.requiredEvents.includes(eventName) && !super.eventNames().includes(eventName)) {
// eslint-disable-next-line no-console
console.error(...args);
process.emitWarning(`[DiscordPlayerWarning] Unhandled "${eventName}" event! Events ${this.requiredEvents.map(m => `"${m}"`).join(", ")} must have event listeners!`);
return false;
} else {
return super.emit(eventName, ...args);
}
}
/** /**
* Resolves queue * Resolves queue
* @param {GuildResolvable|Queue} queueLike Queue like object * @param {GuildResolvable|Queue} queueLike Queue like object