Events
Raya is a typed EventEmitter: listener arguments are checked by TypeScript.
raya.on('trackStart', (player, track) => {});raya.once('ready', () => {});raya.off('trackStart', listener);Event ExplorerSearch events and copy example listeners.
Lifecycle events
| Event | Arguments | Description |
|---|---|---|
ready | () | init() finished its first connection attempt to every node. |
debug | (message: string) | Detailed internal logs. Only built when something listens (or with the debug option). |
Node events
| Event | Arguments | Description |
|---|---|---|
nodeAdd | (node: Node) | A node was added, either from the options or with addNode(). |
nodeRemove | (node: Node) | A node was removed with removeNode(). Its players were moved first. |
nodeReady | (node: Node, resumed: boolean) | A node has a ready session. resumed is true when an existing session was resumed. |
nodeDisconnect | (node: Node, info: { code, reason, wasReady }) | The WebSocket closed. Raya reconnects automatically unless you disconnected on purpose. |
nodeReconnecting | (node: Node, attempt: number, delay: number) | A reconnect is scheduled after delay ms. |
nodeError | (node: Node, error: Error) | Connection problems, authentication failures or node-level REST errors. |
nodeStats | (node: Node, stats: NodeStats) | Lavalink sent fresh stats: players, CPU, memory and frame stats. |
nodeRaw | (node: Node, payload: unknown) | Every WebSocket message, before Raya handles it. |
Player events
| Event | Arguments | Description |
|---|---|---|
playerCreate | (player: Player) | A player was created, including players restored from a snapshot. |
playerDestroy | (player: Player, reason: PlayerDestroyReason) | A player was destroyed. reason: 'manual', 'queueEnd', 'channelEmpty', 'voiceDisconnected', 'channelDeleted', 'guildDeleted'. |
playerMove | (player: Player, oldChannelId: string | null, newChannelId: string | null) | The bot moved between voice channels. newChannelId is null when it was disconnected. |
playerNodeMove | (player: Player, from: Node, to: Node) | A player moved to another node (failover or moveNode) without losing its state. |
playerUpdate | (player: Player, state: { time, position, connected, ping }) | Periodic state from Lavalink, about every 5 seconds while connected. |
playerResume | (player: Player) | A player was resumed, rebuilt after a session loss, or restored from a snapshot. |
playerError | (player: Player, error: Error) | A background error, e.g. auto-advance, voice forwarding or autoplay failed. |
voiceChannelEmpty | (player: Player) | The last human left the voice channel. |
voiceChannelFilled | (player: Player) | Someone joined the voice channel after it was empty. |
socketClosed | (player: Player, info: { code, reason, byRemote }) | Lavalink's voice connection to Discord closed. Raya rejoins for recoverable codes. |
Track events
| Event | Arguments | Description |
|---|---|---|
trackStart | (player: Player, track: Track) | A track started playing. track is your queued object, with its requester. |
trackEnd | (player: Player, track: Track, reason: 'finished' | 'loadFailed' | 'stopped' | 'replaced' | 'cleanup') | A track ended. Raya advances the queue by itself on finished and loadFailed. |
trackStuck | (player: Player, track: Track, thresholdMs: number) | Lavalink could not provide audio for a while. Skipped automatically with skipOnStuck. |
trackError | (player: Player, track: Track, exception: { message, severity, cause }) | Lavalink failed to play a track. The queue moves on. |
Queue events
| Event | Arguments | Description |
|---|---|---|
queueEnd | (player: Player, lastTrack: Track | null) | The queue ran out and autoplay (if on) found nothing. |
queueUpdate | (player: Player, queue: Queue) | Tracks were added, removed, moved, shuffled or cleared. |
Plugin events
| Event | Arguments | Description |
|---|---|---|
lyricsFound | (player: Player, lyrics: Lyrics) | LavaLyrics found lyrics for the current track (after subscribeLyrics). |
lyricsNotFound | (player: Player) | LavaLyrics found no lyrics for the current track. |
lyricsLine | (player: Player, line: LyricsLine, lineIndex: number, skipped: boolean) | A time-synced lyrics line is now being sung. |
segmentsLoaded | (player: Player, segments: unknown[]) | SponsorBlock loaded skippable segments for the track. |
segmentSkipped | (player: Player, segment: unknown) | SponsorBlock skipped a segment. |
chaptersLoaded | (player: Player, chapters: unknown[]) | SponsorBlock loaded chapters for the track. |
chapterStarted | (player: Player, chapter: unknown) | A new SponsorBlock chapter started. |
pluginEvent | (player: Player, event: PluginEvent) | Every non-core Lavalink event, including the plugin events above. |