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)PlayerOptionsReturns
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 | undefinedParameters
guildOrIdstring | { id: string }Returns
Player | undefinedThe 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 | undefinedParameters
guildOrIdstring | { id: string }Returns
Player | undefinedThe 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 }): booleanParameters
guildOrIdstring | { id: string }Returns
booleanTrue 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 }): booleanParameters
guildOrIdstring | { id: string }Returns
booleanTrue if player exists, false if not
Example
const exists = manager.has(guildId);
console.log(`Player exists: ${exists}`);destroy
Destroy all players
destroy(): voidReturns
voidExample
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
querystringrequestedBystringReturns
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`);