Lavaqueue

A queue system for Lavalink, backed by Redis.
Alternatives To Lavaqueue
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Playlistor310
3 months ago5mitPython
🎶Apple Music ↔️ Spotify playlist convertor.
Partify32
3 years ago6mitJavaScript
This is a free open source Spotify-powered app that lets users host parties and have guests connect using their smartphones to submit and vote on songs. The app will only play the highest voted song and can connect to personal playlists.
Lavaqueue2561a month ago31October 15, 20201mitTypeScript
A queue system for Lavalink, backed by Redis.
Re Radio25
8 months ago33agpl-3.0TypeScript
A playlist for teams that can be edited collaboratively by all users
Slack Spotify Playlist13
8 years agomitJava
Publish shared Spotify playlist updates to Slack
Echotunes12
9 years ago1Ruby
Echonest + iTunes = Sweet Playlists
Spookify11
a year agoJavaScript
Music video streaming web application with Spring Boot, Hibernate, Redis, PostgreSQL, React and Redux.
Soundclouder11
7 years ago1Go
:musical_keyboard: Crawling SoundCloud at scale (Go + Redis)
Along10
5 years agoTypeScript
🎙Your Spotify playlists with voice interface. 🔬Empathy and the Web Speech Recognition API.
Wuvt Site10
a year ago23agpl-3.0Python
Website including a CMS, playlist information, and donation management tools
Alternatives To Lavaqueue
Select To Compare


Alternative Project Comparisons
Readme

Lavaqueue

lavalibs support server

A simple queue system for Lavalink, backed by Redis. Built as extension of my generic Lavalink wrapper.

How to use

const { Client: Lavaqueue } = require('lavaqueue');
const voice = new Lavaqueue({
  userID: '', // the user that will be sending audio
  password: '', // your lavalink password
  hosts: {
    rest: '', // your lavalink rest endpoint (include port and protocol)
    ws: '', // your lavalink ws endpoint (include port and protocol)
    redis: '', // your redis instance
  },
  send(guildID, packet) {
    // send the packet to the appropriate gateway connection
  },
  advanceBy(queue, { previous, remaining }) { // optional
    // called at the end of a track when the queue is otherwise unaware of how many tracks to
    // advance by; returns a number: 0 to repeat, negative to advance in reverse, positive to
    // advance forward
  },
});

async function connect() {
  const res = await voice.load('some identifier');
  const queue = voice.queues.get('some guild ID');

  await queue.player.join('channel id'); // join the voice channel
  await queue.add(...res.tracks.map(t => t.track)); // add songs to the queue
  await queue.start(); // start the queue
}

async function skip() {
  await voice.queues.get('some guild ID').next();
}

async function stop() {
  await voice.queues.get('some guild ID').stop();
}

Queues are resilient to crashes, meaning it's safe to blindly restart a queue: it will attempt to recover the previous song at the point the crash occurred. You can restart all currently playing queues by calling voice.queues.start(), although it is recommended to do so as infrequently as possible.

Reference

Queue

  • store: QueueStore
  • guildID: string
  • readonly player - the lavalink player
  • start(): Promise<boolean> - start the queue
  • add(...tracks: string[]): Promise<number> - add tracks to the queue
  • unshift(...tracks: string[]): Promise<number> - add tracks to the front of the queue
  • remove(track: string): PromiseLike<number> - remove a track from the queue
  • next(count: number = 1): Promise<boolean> - skip to the next song; pass negatives to advance in reverse, or 0 to repeat
  • sort(predicate?: (a: string, b: string) => number): Promise<number> - sort the upcoming tracks; resolves with the length of the queue
  • move(from: number, to: number): Promise<string[]> - move a track by index; resolves with the new list
  • shuffle(): Promise<string[]> - shuffle the list; resolves with the new list
  • splice(start: number, deleteCount?: number, ...tracks: string[]): Promise<string[]> - splice the list at the given position; works like Array#splice
  • trim(start: number, end: number): PromiseLike<string> - trim the queue to between the specified positions
  • stop(): Promise<void> - stop playback
  • clear(): PromiseLike<number> - clear the queue
  • current(): Promise<NP | null> - retrieve the current song: returns an object with properties track and position
  • tracks(start: number = 0, end: number = -1): Promise<string[]> - retrieves queued tracks
interface NP {
  position: number;
  track: string;
}

QueueStore extends Map<string, Queue>

  • client: Client
  • redis: Redis - the ioredis instance this queue store is using
  • start(filter?: (guildID: string) => boolean) - start all currently playing queues, with an optional filter callback
  • get(key: string): Queue - gets the specified queue, or creates one if none is found
Popular Redis Projects
Popular Playlist Projects
Popular Data Storage Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Typescript
Redis
Playlist