Class : Manager
Constructorโ
- Manager : options
new Magmastream.Manager(options: ManagerOptions)
| Parameter | Type | Description | Optional |
|---|---|---|---|
autoPlay | boolean | Whether players should automatically play the next song. | |
autoPlaySearchPlatform | SearchPlatform | The search platform autoplay should use. Fallback to YouTube if not found. | |
clientId | string | The client ID to use. | |
clientName | string | Value to use for the Client-Name header. | |
clusterId | number | The array of shard IDs connected to this manager instance. | |
defaultSearchPlatform | SearchPlatform | The default search platform to use. | |
lastFmApiKey | string | The last.fm API key. Get it from here. | |
maxPreviousTracks | number | The maximum number of previous tracks to store. | |
nodes | NodeOptions[] | The array of nodes to connect to. | |
plugins | Plugin[] | An array of plugins to use. | |
replaceYouTubeCredentials | boolean | Whether the YouTube video titles should be replaced if the Author does not exactly match. | |
trackPartial | TrackPartial | An array of track properties to keep. track will always be present. | |
useNode | UseNodeOptions | Use the least amount of players or least load? | |
usePriority | boolean | Use priority mode over least amount of player or load? | |
send | function | Function to send data to the websocket. |
send(id, payload)โ
- Parameters
- Usage
Function to send data to the websocket.
Parameter Type Description idstring The ID of the node to send the data to. payloadPayloadThe payload to send
new Magmastream.Manager({
...ManagerOptions,
send: (id, payload) => {
const guild = client.guilds.cache.get(id);
// NOTE: FOR ERIS YOU NEED JSON.stringify() THE PAYLOAD
if (guild) guild.shard.send(payload);
},
})
Table of contentsโ
Propertiesโ
initiatedโ
Has the manager been initiated?
Return: boolean
playersโ
readonlyThe map of players.
Return: Collection<string,
Player>
nodesโ
readonlyThe map of nodes.
Return: Collection<string,
Node>
optionsโ
readonlyThe 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 functionDecodes 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 functionDecodes 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 functionDestroys a player.
Parameter Type Description Optional guildIdstring as Guild.idThe guild ID of the player to destroy.
destroyNode(identifier)โ
async functionDestroys a node if it exists. Emits a debug event if the node is found and destroyed.
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). clusterIdnumber The cluster ID which runs the current process (required). Default 0 if no provided
loadPlayerStates(nodeId)โ
async functionLoads player states from the JSON file.
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.
Parameter Type Description Optional guildIdstring as Guild.idThe guild ID of the player to retrieve.
handleShutdown()โ
async functionHandles 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.
on(event, listener: () => {})โ
Attaches an event listener to the manager.
Return: this
Parameter Type Description Optional eventManagerEventType The event to listen for. listenerfunction The function to call when the event is emitted.
- Example usage
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 functionSaves player states to the JSON file.
Parameter Type Description Optional guildIdstring as GuildId The guild ID of the player to save
search(query, requester)โ
async functionSearches the enabled sources based off the URL or the
sourceproperty.Return: Promise<
searchResult{}>
Parameter Type Description Optional querystring | searchQuery{}Query to search. requesterUser | ClientUser The user who requested the track.
updateVoiceState(data)โ
async functionUpdates the voice state of a player based on the provided data.
Parameter Type Description Optional dataVoicePacket | VoiceServer | VoiceState The timescale options to apply.
- Example required to use
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()โ
getReturns 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 : ChapterStartedEmitted when a track has started a chapter.
Parameter Type playerPlayertracktrack{}payloadSponsorBlockChapterStarted{}
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.ChapterStarted, (player, track, payload) => {
//Your code
})
ChaptersLoadedโ
ManagerEventTypes : ChaptersLoadedEmitted when a track has loaded chapters.
Parameter Type playerPlayertracktrack{}payloadSponsorBlockChaptersLoaded{}
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.ChapterStarted, (player, track, payload) => {
//Your code
})
Debugโ
ManagerEventTypes : DebugEmitted when a track has loaded chapters.
Parameter Type infostring
- Example usage
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 : NodeConnectEmitted when a Node connects.
Parameter Type nodeNode
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.NodeConnect, (player, track, payload) => {
//Your code
})
NodeCreateโ
ManagerEventTypes : NodeCreateEmitted when a Node is created.
Parameter Type nodeNode
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.NodeCreate, (player, track, payload) => {
//Your code
})
NodeDestroyโ
ManagerEventTypes : NodeDestroyEmitted when a Node is destroyed.
Parameter Type nodeNode
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.NodeDestroy, (player, track, payload) => {
//Your code
})
NodeDisconnectโ
ManagerEventTypes : NodeDisconnectEmitted when a Node is disconnects.
Parameter Type nodeNodereason{ code: number, reason: string }
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.NodeDisconnect, (player, track, payload) => {
//Your code
})
NodeErrorโ
ManagerEventTypes : NodeErrorEmitted when a Node has an error.
Parameter Type nodeNodeerrorError
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.NodeError, (player, track, payload) => {
//Your code
})
NodeRawโ
ManagerEventTypes : NodeRawEmitted whenever any Lavalink event is received.
Parameter Type payloadunknown
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.NodeRaw, (player, track, payload) => {
//Your code
})
NodeReconnectโ
ManagerEventTypes : NodeReconnectEmitted when a Node reconnects.
Parameter Type nodeNode
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.NodeReconnect, (player, track, payload) => {
//Your code
})
PlayerCreateโ
ManagerEventTypes : PlayerCreateEmitted when a player is created.
Parameter Type playerPlayer
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.PlayerCreate, (player) => {
//Your code
})
PlayerDestroyโ
ManagerEventTypes : PlayerDestroyEmitted when a player is destroyed.
Parameter Type playerPlayer
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.PlayerDestroy, (player) => {
//Your code
})
PlayerDisconnectโ
ManagerEventTypes : PlayerDisconnectEmitted when a Player disconnects.
Parameter Type playerPlayeroldChannelstring as GuildChannelId
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.PlayerDisconnect, (player, oldChannel) => {
//Your code
})
PlayerMoveโ
ManagerEventTypes : PlayerMoveEmitted when a player is moved to a new voice channel.
Parameter Type playerPlayerinitChannelstring as GuildChannelId newChannelstring as GuildChannelId
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.PlayerMove, (player, initChannel, newChannel) => {
//Your code
})
PlayerStateUpdateโ
ManagerEventTypes : PlayerStateUpdateEmitted 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 oldPlayerPlayernewPlayerPlayerchangeTypeplayerStateUpdateEvent{}
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.PlayerStateUpdate, (oldPlayer, newPlayer, changeType) => {
//Your code
})
QueueEndโ
ManagerEventTypes : QueueEndEmitted when a player queue ends.
Parameter Type playerPlayertracktrack{}payloadTrackEndEvent{}
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.QueueEnd, (player, track, payload) => {
//Your code
})
SegmentSkippedโ
ManagerEventTypes : SegmentSkippedEmitted when a track has skipped a segment.
Parameter Type playerPlayertracktrack{}payloadSponsorBlockSegmentSkipped{}
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.SegmentSkipped, (player, track, payload) => {
//Your code
})
SegmentsLoadedโ
ManagerEventTypes : SegmentsLoadedEmitted when a track has loaded segments.
Parameter Type playerPlayertracktrack{}payloadSponsorBlockSegmentsLoaded{}
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.SegmentsLoaded, (player, track, payload) => {
//Your code
})
SocketClosedโ
ManagerEventTypes : SocketClosedEmitted when a voice connection is closed.
Parameter Type playerPlayerpayloadWebSocketClosedEvent{}
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.SocketClosed, (player, track, payload) => {
//Your code
})
TrackEndโ
ManagerEventTypes : TrackEndEmitted when a track ends.
Parameter Type playerPlayertracktrack{}payloadTrackEndEvent{}
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.TrackEnd, (player, track, payload) => {
//Your code
})
TrackErrorโ
ManagerEventTypes : TrackErrorEmitted when a track has an error during playback.
Parameter Type playerPlayertracktrack{}payloadTrackExceptionEvent{}
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.TrackError, (player, track, payload) => {
//Your code
})
TrackStartโ
ManagerEventTypes : TrackStartEmitted when a track starts.
Parameter Type playerPlayertracktrack{}payloadTrackStartEvent{}
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.TrackStart, (player, track, payload) => {
//Your code
})
TrackStuckโ
ManagerEventTypes : TrackStuckEmitted when a track gets stuck during playback.
Parameter Type playerPlayertracktrack{}payloadTrackStuckEvent{}
- Example usage
const { Manager, ManagerEventTypes } = require('magmastream');
const manager = new Manager({
...ManagerOptions
})
manager.on(ManagerEventTypes.TrackStuck, (player, track, payload) => {
//Your code
})