Skip to content

Commit

Permalink
feat: added debug event
Browse files Browse the repository at this point in the history
  • Loading branch information
Casca0 committed Jun 7, 2024
1 parent 9069bea commit 287e627
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 19 deletions.
10 changes: 5 additions & 5 deletions src/player/common/types.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { GuildQueueEvents } from 'discord-player';
import { PlayerMetadata } from '../PlayerMetadata.js';

export interface PlayerEvent<
K extends keyof GuildQueueEvents,
M = PlayerMetadata,
export interface PlayerEventInterface<
K extends keyof GuildQueueEvents,
M = PlayerMetadata
> {
name: K;
execute: GuildQueueEvents<M>[K];
name: K;
execute: GuildQueueEvents<M>[K];
}

export type Constructable<T> = new (...args: unknown[]) => T;
14 changes: 14 additions & 0 deletions src/player/events/Debug.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { GuildQueue, GuildQueueEvent } from 'discord-player';
import { PlayerEventInterface } from '../common/types.js';
import { PlayerMetadata } from '../PlayerMetadata.js';

// prettier-ignore
export default class DebugEvent
implements PlayerEventInterface<typeof GuildQueueEvent.debug>
{
public name = GuildQueueEvent.debug;

public async execute(queue: GuildQueue<PlayerMetadata>, message: string) {
console.log(`Player debug event: ${message}`);
}
}
6 changes: 2 additions & 4 deletions src/player/events/Error.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import { GuildQueue, GuildQueueEvent } from 'discord-player';
import { PlayerEvent } from '../common/types.js';
import { PlayerEventInterface } from '../common/types.js';
import { PlayerMetadata } from '../PlayerMetadata.js';

// prettier-ignore
export default class ErrorEvent
implements PlayerEvent<typeof GuildQueueEvent.error>
{
export default class ErrorEvent implements PlayerEventInterface<typeof GuildQueueEvent.error> {
public name = GuildQueueEvent.error;

public async execute(queue: GuildQueue<PlayerMetadata>, error: Error) {
Expand Down
4 changes: 2 additions & 2 deletions src/player/events/PlayerError.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { GuildQueue, GuildQueueEvent } from 'discord-player';
import { PlayerEvent } from '../common/types.js';
import { PlayerEventInterface } from '../common/types.js';
import { PlayerMetadata } from '../PlayerMetadata.js';

// prettier-ignore
export default class PlayerError
implements PlayerEvent<typeof GuildQueueEvent.playerError>
implements PlayerEventInterface<typeof GuildQueueEvent.playerError>
{
public name = GuildQueueEvent.playerError;

Expand Down
4 changes: 2 additions & 2 deletions src/player/events/PlaylistAddEvent.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { GuildQueue, GuildQueueEvent, Track } from 'discord-player';
import { PlayerEvent } from '../common/types.js';
import { PlayerEventInterface } from '../common/types.js';
import { PlayerMetadata } from '../PlayerMetadata.js';
import { EmbedBuilder } from 'discord.js';

export default class PlaylistAddEvent
implements PlayerEvent<typeof GuildQueueEvent.audioTracksAdd> {
implements PlayerEventInterface<typeof GuildQueueEvent.audioTracksAdd> {
public name = GuildQueueEvent.audioTracksAdd;

public async execute(
Expand Down
4 changes: 2 additions & 2 deletions src/player/events/TrackAddEvent.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { GuildQueue, GuildQueueEvent, Track } from 'discord-player';
import { PlayerEvent } from '../common/types.js';
import { PlayerEventInterface } from '../common/types.js';
import { PlayerMetadata } from '../PlayerMetadata.js';
import { EmbedBuilder } from 'discord.js';

export default class TrackAddEvent
implements PlayerEvent<typeof GuildQueueEvent.audioTrackAdd> {
implements PlayerEventInterface<typeof GuildQueueEvent.audioTrackAdd> {
public name = GuildQueueEvent.audioTrackAdd;

public async execute(
Expand Down
4 changes: 2 additions & 2 deletions src/player/events/TrackStartEvent.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { GuildQueue, GuildQueueEvent, Track } from 'discord-player';
import { PlayerEvent } from '../common/types.js';
import { PlayerEventInterface } from '../common/types.js';
import { PlayerMetadata } from '../PlayerMetadata.js';
import { EmbedBuilder } from 'discord.js';

export default class TrackStartEvent
implements PlayerEvent<typeof GuildQueueEvent.playerStart> {
implements PlayerEventInterface<typeof GuildQueueEvent.playerStart> {
public name = GuildQueueEvent.playerStart;

public async execute(
Expand Down
7 changes: 5 additions & 2 deletions src/player/registerEvents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { type GuildQueueEvents, useMainPlayer } from 'discord-player';
import { readdir } from 'node:fs/promises';
import { join } from 'node:path';
import { PlayerEventsPath } from '#bot/utils/constants';
import type { Constructable, PlayerEvent } from './common/types.js';
import type { Constructable, PlayerEventInterface } from './common/types.js';

export async function registerPlayerEvents() {
const files = await readdir(PlayerEventsPath);
Expand All @@ -12,12 +12,15 @@ export async function registerPlayerEvents() {
const { default: Event } = (await import(
`file://${join(PlayerEventsPath, file)}`
)) as {
default: Constructable<PlayerEvent<keyof GuildQueueEvents>>;
default: Constructable<PlayerEventInterface<keyof GuildQueueEvents>>;
};

const event = new Event();

player.events.on(event.name, event.execute.bind(event));
player.on('debug', async (message: string) =>
console.log(`General player debug event ${message}`)
);
});

await Promise.all(loader);
Expand Down

0 comments on commit 287e627

Please sign in to comment.