Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

shoukaku-fix

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

shoukaku-fix

A stable and updated wrapper around Lavalink

  • 4.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Shoukaku

A stable and updated wrapper around Lavalink

Discord npm Github Stars GitHub issues Snyk Vulnerabilities for npm package NPM

The ShipGirl Project, feat Shoukaku; ⓒ Azur Lane

Features

✅ Stable

✅ Documented

✅ Updated

✅ Extendable

✅ ESM & CommonJS supported

✅ Very cute (Very Important)

Supported Libraries

Refer to /src/connectors for list of supported libraries + how to support other libraries

Installation

npm install shoukaku

Documentation

https://shoukaku.shipgirl.moe/

Small code snippet examples

Initializing the library (Using Connector Discord.JS)

const { Client } = require("discord.js");
const { Shoukaku, Connectors } = require("shoukaku");
const Nodes = [
  {
    name: "Localhost",
    url: "localhost:6969",
    auth: "re_aoharu",
  },
];
const client = new Client();
const shoukaku = new Shoukaku(new Connectors.DiscordJS(client), Nodes);

// Always handle "error" events or your program may crash due to uncaught error
shoukaku.on("error", (_, error) => console.error(error));
client.login("token");

// If you want shoukaku to be available on client, then bind it to it, here is one example of it
client.shoukaku = shoukaku;

Never initialize Shoukaku like this, or else she will never initialize, start shoukaku before you call client.login()

client.on("ready", () => {
  client.shoukaku = new Shoukaku(new Connectors.DiscordJS(client), Nodes);
});

Join a voice channel, search for a track, play the track, then disconnect after the track ends

// create a voice connection and player using Shoukaku#joinVoiceChannel
const player = await shoukaku.joinVoiceChannel({
  guildId: "your_guild_id",
  channelId: "your_channel_id",
  shardId: 0, // if unsharded it will always be zero (depending on your library implementation)
});
// player is created, now search for a track
const result = await player.node.rest.resolve("scsearch:snowhalation");
if (!result?.data.length) return;
const metadata = result.tracks.shift();
// play the searched track
await player.playTrack({ track: { encoded: metadata.encoded } });
// wait for track to end
await once(player, 'end');
// leaver the voice channel
await shoukaku.leaveVoiceChannel(player.guildId);

Playing a track and changing a playback option (in this example, volume)

await player.playTrack({ track: { encoded: metadata.encoded } });
await player.setGlobalVolume(50);

Updating the whole player if you don't want to use my helper functions

await player.update({ ...playerOptions });

Setting a custom get node ideal function

const shoukaku = new Shoukaku(
  new Connectors.DiscordJS(client),
  [{ ...yourNodeOptions }],
  {
    ...yourShoukakuOptions,
    nodeResolver: (nodes, connection) => getYourIdealNode(nodes, connection),
  }
);
const player = await shoukaku.joinVoiceChannel({
  guildId: "your_guild_id",
  channelId: "your_channel_id",
  shardId: 0,
});

A full bot example (that dont use timeout to leave the voice channel) can be found at https://github.com/shipgirlproject/Shoukaku?tab=readme-ov-file#full-bot-implementation-of-shoukaku-in-discordjs

Shoukaku's options

OptionTypeDefaultDescriptionNotes
resumebooleanfalseIf you want to enable resuming when your connection when your connection to lavalink disconnects
resumeTimeoutnumber30Timeout before lavalink destroys the players on a disconnectIn seconds
resumeByLibrarybooleanfalseIf you want to force resume players no matter what even if it's not resumable by lavalink
reconnectTriesnumber3Number of tries to reconnect to lavalink before disconnecting
reconnectIntervalnumber5Timeout between reconnectsIn seconds
restTimeoutnumber60Maximum amount of time to wait for rest lavalink api requestsIn seconds
moveOnDisconnectbooleanfalseWhether to move players to a different lavalink node when a node disconnects
userAgentstring(auto)Changes the user-agent used for lavalink requestsNot recommeded to change
structuresObject{rest?, player?}{}Custom structures for shoukaku to use
voiceConnectionTimeoutnumber15Maximum amount of time to wait for a join voice channel commandIn seconds
nodeResolverfunctionfunctionCustom node resolver if you want to have your own method of getting the ideal node

3rd Party Plugins

NameLinkDescription
KazagumoGithubA wrapper for Shoukaku that has an internal queue system

Open a PR if you want to add your plugin here

Support (#Development) | Lavalink

Full bot implementation of Shoukaku in Discord.JS

Kongou

Made with ❤ by

@ichimakase (Saya)

Keywords

FAQs

Package last updated on 13 Jun 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc