ziplayer

⌘K

PlayerManager

classcoreplayermanager

The main class for managing players across multiple Discord guilds.

Example

// Basic setup with plugins and extensions
const manager = new PlayerManager({
  plugins: [
    new YouTubePlugin(),
    new SoundCloudPlugin(),
    new SpotifyPlugin(),
    new TTSPlugin({ defaultLang: "en" })
  ],
  extensions: [
    new voiceExt(null, { lang: "en-US" }),
    new lavalinkExt(null, {
      nodes: [{ host: "localhost", port: 2333, password: "youshallnotpass" }]
    })
  ],
  extractorTimeout: 10000
});
// Create a player for a guild
const player = await manager.create(guildId, {
  tts: { interrupt: true, volume: 1 },
  leaveOnEnd: true,
  leaveTimeout: 30000
});
// Get existing player
const existingPlayer = manager.get(guildId);
if (existingPlayer) {
  await existingPlayer.play("Never Gonna Give You Up", userId);
}

Methods

create

Create a new player for a guild

async create(guildOrId: string | { id: string }, options?: PlayerOptions): Promise<Player>

Parameters

guildOrIdstring | { id: string }
options?(optional)PlayerOptions

Returns

Promise<Player>

The created player instance

Example

// Create player with basic options
const player = await manager.create(guildId, {
  tts: { interrupt: true, volume: 1 },
  leaveOnEnd: true,
  leaveTimeout: 30000
});
// Create player with advanced options
const advancedPlayer = await manager.create(guild, {
  volume: 0.8,
  quality: "high",
  selfDeaf: false,
  selfMute: false,
  tts: {
    createPlayer: true,
    interrupt: true,
    volume: 1.0,
    Max_Time_TTS: 30000
  },
  userdata: { customData: "example" }
});
// Connect and play immediately
await player.connect(voiceChannel);
await player.play("Never Gonna Give You Up", userId);

get

Get an existing player for a guild

get(guildOrId: string | { id: string }): Player | undefined

Parameters

guildOrIdstring | { id: string }

Returns

Player | undefined

The player instance or undefined if not found

Example

// Get player by guild ID
const player = manager.get(guildId);
if (player) {
  await player.play("Never Gonna Give You Up", userId);
} else {
  console.log("No player found for this guild");
}
// Get player by guild object
const playerFromGuild = manager.get(guild);
if (playerFromGuild) {
  playerFromGuild.setVolume(0.5);
}
// Check if player exists before using
const existingPlayer = manager.get(guildId);
if (existingPlayer && existingPlayer.playing) {
  existingPlayer.pause();
}

getPlayer

Get an existing player for a guild

getPlayer(guildOrId: string | { id: string }): Player | undefined

Parameters

guildOrIdstring | { id: string }

Returns

Player | undefined

The player instance or undefined

Example

const player = manager.get(guildId);
if (player) {
  await player.play("song name", userId);
}

getall

Get all players

getall(): Player[] | []

Returns

Player[]

All player instances

Example

const players = manager.getall();
console.log(`Players: ${players.length}`);

delete

Destroy a player and clean up resources

delete(guildOrId: string | { id: string }): boolean

Parameters

guildOrIdstring | { id: string }

Returns

boolean

True if player was destroyed, false if not found

Example

// Destroy player by guild ID
const destroyed = manager.delete(guildId);
if (destroyed) {
  console.log("Player destroyed successfully");
} else {
  console.log("No player found to destroy");
}
// Destroy player by guild object
const destroyedFromGuild = manager.delete(guild);
console.log(`Player destroyed: ${destroyedFromGuild}`);
// Clean up all players
for (const [guildId, player] of manager.players) {
  const destroyed = manager.delete(guildId);
  console.log(`Destroyed player for ${guildId}: ${destroyed}`);
}

has

Check if a player exists for a guild

has(guildOrId: string | { id: string }): boolean

Parameters

guildOrIdstring | { id: string }

Returns

boolean

True if player exists, false if not

Example

const exists = manager.has(guildId);
console.log(`Player exists: ${exists}`);

destroy

Destroy all players

destroy(): void

Returns

void

Example

manager.destroy();
console.log(`All players destroyed`);

search

Search using registered plugins without creating a Player.

async search(query: string, requestedBy: string): Promise<SearchResult>

Parameters

querystring
requestedBystring

Returns

Promise<SearchResult>

The search result

Example

const result = await manager.search("Never Gonna Give You Up", userId);
console.log(`Search result: ${result.tracks.length} tracks`);

Core Classes

Core Interfaces

Extensions

Plugins