Skip to main content
Version: v2.8.5

Class : Manager

Constructor

new Magmastream.Manager(options: ManagerOptions)
Parameter Type Description Optional
autoPlaybooleanWhether players should automatically play the next song.
autoPlaySearchPlatform SearchPlatformThe search platform autoplay should use. Fallback to YouTube if not found.
clientIdstringThe client ID to use.
clientNamestringValue to use for the Client-Name header.
clusterIdnumberThe array of shard IDs connected to this manager instance.
defaultSearchPlatform SearchPlatformThe default search platform to use.
lastFmApiKeystringThe last.fm API key. Get it from here.
maxPreviousTracksnumberThe maximum number of previous tracks to store.
nodesNodeOptions[]The array of nodes to connect to.
pluginsPlugin[]An array of plugins to use.
replaceYouTubeCredentialsbooleanWhether the YouTube video titles should be replaced if the Author does not exactly match.
trackPartial TrackPartialAn array of track properties to keep. track will always be present.
useNode UseNodeOptionsUse the least amount of players or least load?
usePrioritybooleanUse priority mode over least amount of player or load?
sendfunctionFunction to send data to the websocket.

send(id, payload)

Function to send data to the websocket.

Parameter Type Description
idstringThe ID of the node to send the data to.
payloadPayloadThe payload to send

Table of contents

Properties Methods Events
initiatedcreate()chapterStarted
nodescreateNode()chaptersLoaded
optionsdecodeTrack()debug
playersdecodeTracks()nodeConnect
destroy()nodeCreate
destroyNode()nodeDestroy
get()nodeDisconnect
handleShutdown()nodeError
init()nodeRaw
loadPlayerStates()nodeReconnect
on()playerCreate
savePlayerState()playerDestroy
search()playerDisconnect
updateVoiceState()playerMove
useableNode()playerStateUpdate
queueEnd
segmentSkipped
segmentsLoaded
socketClosed
trackEnd
trackError
trackStart
trackStuck

Properties

initiated

Has the manager been initiated?

Return: boolean


players

readonly

The map of players.

Return: Collection<string, Player>


nodes

readonly

The map of nodes.

Return: Collection<string, Node>


options

readonly

The options that were set.

Return: managerOptions{}

Methods

create(options)

Creates a player or returns one if it already exists.

Return: Player

Parameter Type Description Optional
optionsplayerOptions{}The options to create the player with.

createNode(options)

Creates a new node or returns an existing one if it already exists.

Return: Node

Parameter Type Description Optional
optionsnodeOptions{}The options to create the node with.

decodeTrack(track)

async function

Decodes a base64 encoded track and returns a TrackData.

Return: Promise<trackData{}>

Parameter Type Description Optional
trackstring as base64The base64 encoded track string.

decodeTracks(tracks)

async function

Decodes an array of base64 encoded tracks and returns an array of TrackData.
Emits a debug event with the tracks being decoded.

Return: Promise<trackData{}[]>

Parameter Type Description Optional
tracksstring[] as base64The base64 encoded track string.

destroy(guildId)

async function

Destroys a player.

Return: Promise<void>

Parameter Type Description Optional
guildIdstring as Guild.idThe guild ID of the player to destroy.

destroyNode(identifier)

async function

Destroys a node if it exists. Emits a debug event if the node is found and destroyed.

Return: Promise<void>

Parameter Type Description Optional
identifierstring as Node.identifierThe identifier of the node to destroy.

init(clientId, clusterId)

Initiates the Manager.

Return: this

Parameter Type Description Optional
clientIdstring as ClientUser.idThe Discord client ID (required).
clusterIdnumberThe cluster ID which runs the current process (required). Default 0 if no provided

loadPlayerStates(nodeId)

async function

Loads player states from the JSON file.

Return: Promise<void>

Parameter Type Description Optional
nodeIdstring as Node.identifierThe ID of the node to load player states from (required).

get(guildId)

Returns a player or undefined if it does not exist.

Return: Player | undefined

Parameter Type Description Optional
guildIdstring as Guild.idThe guild ID of the player to retrieve.

handleShutdown()

async function

Handles the shutdown of the process by saving all active player's states and optionally cleaning up inactive players.

This function is called when the process is about to exit.
It iterates through all players and calls savePlayerState to save their states. Optionally, it also calls cleanupInactivePlayers (private function) to remove any stale player state files. After saving and cleaning up, it exits the process.

Return: Promise<void>


on(event, listener: () => {})

Attaches an event listener to the manager.

Return: this

Parameter Type Description Optional
event ManagerEventTypeThe event to listen for.
listenerfunctionThe function to call when the event is emitted.
const { Manager } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on('trackStart', (player, track) => {
console.log(`Now playing ${track.title} in ${player.guildId}`);
});

savePlayerState(guildId)

async function

Saves player states to the JSON file.

Return: Promise<void>

Parameter Type Description Optional
guildIdstring as GuildIdThe guild ID of the player to save

async function

Searches the enabled sources based off the URL or the source property.

Return: Promise<searchResult{}>

Parameter Type Description Optional
querystring | searchQuery{}Query to search.
requesterUser | ClientUserThe user who requested the track.

updateVoiceState(data)

async function

Updates the voice state of a player based on the provided data.

Return: Promise<void>

Parameter Type Description Optional
dataVoicePacket | VoiceServer | VoiceStateThe timescale options to apply.
const { Client, Events } = require('discord.js');
const { Manager } = require('magmastream');

const client = new Client({
...ClientOptions
})

const manager = new Manager({
...ManagerOptions
})

// Required for magmastream to work
client.on(Events.Raw, (data) => {
manager.updateVoiceState(data);
})

useableNode()

get

Returns the node to use based on the configured useNode and usePriority options.

If usePriority is true, the node is chosen based on priority, otherwise it is chosen based on the useNode option.
If useNode is "leastLoad", the node with the lowest load is chosen, if it is "leastPlayers", the node with the fewest players is chosen.
If usePriority is false and useNode is not set, the node with the lowest load is chosen.

Return: Node

Events

ChapterStarted

ManagerEventTypes : ChapterStarted

Emitted when a track has started a chapter.

Parameter Type
playerPlayer
tracktrack{}
payloadSponsorBlockChapterStarted{}
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.ChapterStarted, (player, track, payload) => {
//Your code
})

ChaptersLoaded

ManagerEventTypes : ChaptersLoaded

Emitted when a track has loaded chapters.

Parameter Type
playerPlayer
tracktrack{}
payloadSponsorBlockChaptersLoaded{}
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.ChapterStarted, (player, track, payload) => {
//Your code
})

Debug

ManagerEventTypes : Debug

Emitted when a track has loaded chapters.

Parameter Type
infostring
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.Debug, (info) => {
console.log(`Debug from magmastream: ${info}`);
//Your code
})

NodeConnect

ManagerEventTypes : NodeConnect

Emitted when a Node connects.

Parameter Type
nodeNode
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.NodeConnect, (player, track, payload) => {
//Your code
})

NodeCreate

ManagerEventTypes : NodeCreate

Emitted when a Node is created.

Parameter Type
nodeNode
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.NodeCreate, (player, track, payload) => {
//Your code
})

NodeDestroy

ManagerEventTypes : NodeDestroy

Emitted when a Node is destroyed.

Parameter Type
nodeNode
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.NodeDestroy, (player, track, payload) => {
//Your code
})

NodeDisconnect

ManagerEventTypes : NodeDisconnect

Emitted when a Node is disconnects.

Parameter Type
nodeNode
reason{ code: number, reason: string }
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.NodeDisconnect, (player, track, payload) => {
//Your code
})

NodeError

ManagerEventTypes : NodeError

Emitted when a Node has an error.

Parameter Type
nodeNode
errorError
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.NodeError, (player, track, payload) => {
//Your code
})

NodeRaw

ManagerEventTypes : NodeRaw

Emitted whenever any Lavalink event is received.

Parameter Type
payloadunknown
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.NodeRaw, (player, track, payload) => {
//Your code
})

NodeReconnect

ManagerEventTypes : NodeReconnect

Emitted when a Node reconnects.

Parameter Type
nodeNode
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.NodeReconnect, (player, track, payload) => {
//Your code
})

PlayerCreate

ManagerEventTypes : PlayerCreate

Emitted when a player is created.

Parameter Type
playerPlayer
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.PlayerCreate, (player) => {
//Your code
})

PlayerDestroy

ManagerEventTypes : PlayerDestroy

Emitted when a player is destroyed.

Parameter Type
playerPlayer
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.PlayerDestroy, (player) => {
//Your code
})

PlayerDisconnect

ManagerEventTypes : PlayerDisconnect

Emitted when a Player disconnects.

Parameter Type
playerPlayer
oldChannelstring as GuildChannelId
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.PlayerDisconnect, (player, oldChannel) => {
//Your code
})

PlayerMove

ManagerEventTypes : PlayerMove

Emitted when a player is moved to a new voice channel.

Parameter Type
playerPlayer
initChannelstring as GuildChannelId
newChannelstring as GuildChannelId
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.PlayerMove, (player, initChannel, newChannel) => {
//Your code
})

PlayerStateUpdate

ManagerEventTypes : PlayerStateUpdate

Emitted when the state of the player has been changed either player paused/resumed or the loop modes have been toggled on or off.

Parameter Type
oldPlayerPlayer
newPlayerPlayer
changeTypeplayerStateUpdateEvent{}
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.PlayerStateUpdate, (oldPlayer, newPlayer, changeType) => {
//Your code
})

QueueEnd

ManagerEventTypes : QueueEnd

Emitted when a player queue ends.

Parameter Type
playerPlayer
tracktrack{}
payloadTrackEndEvent{}
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.QueueEnd, (player, track, payload) => {
//Your code
})

SegmentSkipped

ManagerEventTypes : SegmentSkipped

Emitted when a track has skipped a segment.

Parameter Type
playerPlayer
tracktrack{}
payloadSponsorBlockSegmentSkipped{}
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.SegmentSkipped, (player, track, payload) => {
//Your code
})

SegmentsLoaded

ManagerEventTypes : SegmentsLoaded

Emitted when a track has loaded segments.

Parameter Type
playerPlayer
tracktrack{}
payloadSponsorBlockSegmentsLoaded{}
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.SegmentsLoaded, (player, track, payload) => {
//Your code
})

SocketClosed

ManagerEventTypes : SocketClosed

Emitted when a voice connection is closed.

Parameter Type
playerPlayer
payloadWebSocketClosedEvent{}
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.SocketClosed, (player, track, payload) => {
//Your code
})

TrackEnd

ManagerEventTypes : TrackEnd

Emitted when a track ends.

Parameter Type
playerPlayer
tracktrack{}
payloadTrackEndEvent{}
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.TrackEnd, (player, track, payload) => {
//Your code
})

TrackError

ManagerEventTypes : TrackError

Emitted when a track has an error during playback.

Parameter Type
playerPlayer
tracktrack{}
payloadTrackExceptionEvent{}
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.TrackError, (player, track, payload) => {
//Your code
})

TrackStart

ManagerEventTypes : TrackStart

Emitted when a track starts.

Parameter Type
playerPlayer
tracktrack{}
payloadTrackStartEvent{}
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.TrackStart, (player, track, payload) => {
//Your code
})

TrackStuck

ManagerEventTypes : TrackStuck

Emitted when a track gets stuck during playback.

Parameter Type
playerPlayer
tracktrack{}
payloadTrackStuckEvent{}
const { Manager, ManagerEventTypes } = require('magmastream');

const manager = new Manager({
...ManagerOptions
})

manager.on(ManagerEventTypes.TrackStuck, (player, track, payload) => {
//Your code
})