Skip to main content
Version: v2.8.1

Class : Manager

Constructor

new Magmastream.Manager(options: ManagerOptions)
Parameter Type Description
usePrioritybooleanUse priority mode over least amount of player or load?
useNode UseNodeUse the least amount of players or least load?
nodesNode[]The array of nodes to connect to.
clientIdstring as ClientUser.idThe client ID to use.
clientNamestringValue to use for the Client-Name header.
pluginsPlugin[]A array of plugins to use.
autoPlaybooleanWhether players should automatically play the next song.
autoPlaySearchPlatform SearchPlatformThe search platform autoplay should use. Failback to Youtube if not found.
trackPartialstring[]An array of track properties to keep. track will always be present.
defaultSearchPlatform SearchPlatformThe default search platform to use.
replaceYouTubeCredentialsbooleanWhether the YouTube video titles should be replaced if the Author does not exactly match.
lastFmApiKeystring as apiKeyThe last.fm API key. If you need to create one go here or if you already have one, get it from here.
sendfunction as send()Function 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)

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)

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)

Destroys a player if it exists and cleans up inactive players.

Return: void

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

destroyNode(identifier)

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

Return: void

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

init(clientId)

Initiates the Manager.

Return: this

Parameter Type Description Optional
clientIdstring as ClientUser.idThe Discord client ID (required).

loadPlayerStates(nodeId)

Loads player states from the JSON file.

Return: 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()

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.

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)

Saves player states to the JSON file.

Return: void

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

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)

Sends voice data to the Lavalink server.

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{} | unresolvedTrack{}
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{} | unresolvedTrack{}
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.NodeDisconnect, (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{} | unresolvedTrack{}
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{} | unresolvedTrack{}
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{} | unresolvedTrack{}
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{} | unresolvedTrack{}
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
})