diff --git a/README.md b/README.md index 5382fb723..b5f0b6ea3 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ A [basic example bot](Testbot) is available. * Basic authentication * Prometheus metrics * Docker images -* [Plugin support](PLUGINS.md) +* [Plugin support](https://lavalink.dev/plugins.html) ## Requirements diff --git a/docs/api/rest.md b/docs/api/rest.md index 72d3f9722..c3b5f19ff 100644 --- a/docs/api/rest.md +++ b/docs/api/rest.md @@ -30,7 +30,7 @@ When Lavalink encounters an error, it will respond with a JSON object containing | message | string | The error message | | path | string | The request path | -
+
Example Payload ```json @@ -128,7 +128,7 @@ Response: [Track](#track) object with the loaded track. -
+
Example Payload ```yaml @@ -153,7 +153,7 @@ Response: | pluginInfo | Object | Addition playlist info provided by plugins | | tracks | array of [Track](#track) objects | The tracks of the playlist | -
+
Example Payload ```yaml @@ -173,7 +173,7 @@ Response: Array of [Track](#track) objects from the search result. -
+
Example Payload ```yaml @@ -197,7 +197,7 @@ Array of [Track](#track) objects from the search result. Empty object. -
+
Example Payload ```yaml @@ -213,7 +213,7 @@ Empty object. [Exception](websocket.md#exception-object) object with the error. -
+
Example Payload ```yaml @@ -243,7 +243,7 @@ Response: [Track](#track) object -
+
Example Payload ```yaml @@ -281,7 +281,7 @@ Request: Array of track data strings -
+
Example Payload ```yaml @@ -297,7 +297,7 @@ Response: Array of [Track](#track) objects -
+
Example Payload ```yaml @@ -361,19 +361,19 @@ with the Voice Server Update. Please refer to https://discord.com/developers/doc Filters are used in above requests and look like this -| Field | Type | Description | -|----------------|------------------------------------------------|----------------------------------------------------------------------------------------------| -| volume? | float | Adjusts the player volume from 0.0 to 5.0, where 1.0 is 100%. Values >1.0 may cause clipping | -| equalizer? | array of [Equalizer](#equalizer) objects | Adjusts 15 different bands | -| karaoke? | [Karaoke](#karaoke) object | Eliminates part of a band, usually targeting vocals | -| timescale? | [Timescale](#timescale) object | Changes the speed, pitch, and rate | -| tremolo? | [Tremolo](#tremolo) object | Creates a shuddering effect, where the volume quickly oscillates | -| vibrato? | [Vibrato](#vibrato) object | Creates a shuddering effect, where the pitch quickly oscillates | -| rotation? | [Rotation](#rotation) object | Rotates the audio around the stereo channels/user headphones (aka Audio Panning) | -| distortion? | [Distortion](#distortion) object | Distorts the audio | -| channelMix? | [Channel Mix](#channel-mix) object | Mixes both channels (left and right) | -| lowPass? | [Low Pass](#low-pass) object | Filters higher frequencies | -| pluginFilters? | map of [Plugin Filter](#plugin-filter) objects | Filter plugin configurations | +| Field | Type | Description | +|----------------|--------------------------------------------------|----------------------------------------------------------------------------------------------| +| volume? | float | Adjusts the player volume from 0.0 to 5.0, where 1.0 is 100%. Values >1.0 may cause clipping | +| equalizer? | array of [Equalizer](#equalizer) objects | Adjusts 15 different bands | +| karaoke? | [Karaoke](#karaoke) object | Eliminates part of a band, usually targeting vocals | +| timescale? | [Timescale](#timescale) object | Changes the speed, pitch, and rate | +| tremolo? | [Tremolo](#tremolo) object | Creates a shuddering effect, where the volume quickly oscillates | +| vibrato? | [Vibrato](#vibrato) object | Creates a shuddering effect, where the pitch quickly oscillates | +| rotation? | [Rotation](#rotation) object | Rotates the audio around the stereo channels/user headphones (aka Audio Panning) | +| distortion? | [Distortion](#distortion) object | Distorts the audio | +| channelMix? | [Channel Mix](#channel-mix) object | Mixes both channels (left and right) | +| lowPass? | [Low Pass](#low-pass) object | Filters higher frequencies | +| pluginFilters? | map of [Plugin Filters](#plugin-filters) objects | Filter plugin configurations | ##### Equalizer @@ -381,7 +381,7 @@ There are 15 bands (0-14) that can be changed. "gain" is the multiplier for the given band. The default value is 0. Valid values range from -0.25 to 1.0, where -0.25 means the given band is completely muted, and 0.25 means it is doubled. Modifying the gain could also change the volume of the output. -
+
Band Frequencies | Band | Frequency | @@ -498,7 +498,7 @@ Any smoothing values equal to or less than 1.0 will disable the filter. Plugins can add their own filters. The key is the name of the plugin, and the value is the configuration for that plugin. The configuration is plugin specific. See [Plugins](plugins.md) for more plugin information. -
+
Example Payload ```json @@ -571,7 +571,7 @@ Returns a list of players in this specific session. GET /v4/sessions/{sessionId}/players ``` -
+
Example Payload ```yaml @@ -631,7 +631,7 @@ Response: [Player](#Player) object -
+
Example Payload ```yaml @@ -724,7 +724,7 @@ Request: When `identifier` is used, Lavalink will try to resolve the identifier as a single track. An HTTP `400` error is returned when resolving a playlist, search result, or no tracks. -
+
Example Payload ```yaml @@ -753,7 +753,7 @@ Response: [Player](#Player) object -
+
Example Payload ```yaml @@ -827,7 +827,7 @@ Request: | resuming? | bool | Whether resuming is enabled for this session or not | | timeout? | int | The timeout in seconds (default is 60s) | -
+
Example Payload ```json @@ -846,7 +846,7 @@ Response: | resuming | bool | Whether resuming is enabled for this session or not | | timeout | int | The timeout in seconds (default is 60s) | -
+
Example Payload ```json @@ -911,7 +911,7 @@ Parsed [Semantic Versioning 2.0.0](https://semver.org/) | name | string | The name of the plugin | | version | string | The version of the plugin | -
+
Example Payload ```json @@ -988,7 +988,7 @@ Response: `frameStats` is always missing for this endpoint. [Stats](websocket.md#stats-object) object -
+
Example Payload ```json @@ -1079,7 +1079,7 @@ Response: | class | ?[Route Planner Type](#route-planner-types) | The name of the RoutePlanner implementation being used by this server | | details | ?[Details](#details-object) object | The status details of the RoutePlanner | -
+
Example Payload ```json @@ -1119,7 +1119,7 @@ Request: |---------|--------|-----------------------------------------------------------------------------| | address | string | The address to unmark as failed. This address must be in the same ip block. | -
+
Example Payload ```json diff --git a/docs/api/websocket.md b/docs/api/websocket.md index 487c5aa36..fe3f18516 100644 --- a/docs/api/websocket.md +++ b/docs/api/websocket.md @@ -19,7 +19,7 @@ When opening a websocket connection, you must supply 3 required headers: **\*For more information on resuming see [Resuming](index.md#resuming)** -
+
Example Headers ``` @@ -37,7 +37,7 @@ Websocket messages all follow the following standard format: | op | [OP Type](#op-types) | The op type | | ... | ... | Extra fields depending on the op type | -
+
Example Payload ```yaml @@ -67,7 +67,7 @@ Dispatched by Lavalink upon successful connection and authorization. Contains fi | resumed | bool | Whether this session was resumed | | sessionId | string | The Lavalink session id of this connection. Not to be confused with a Discord voice session id | -
+
Example Payload ```json @@ -100,7 +100,7 @@ Dispatched every x seconds (configurable in `application.yml`) with the current | connected | bool | Whether Lavalink is connected to the voice gateway | | ping | int | The ping of the node to the Discord voice server in milliseconds (`-1` if not connected) | -
+
Example Payload ```json @@ -162,7 +162,7 @@ A collection of statistics sent every minute. \* The expected amount of frames is 3000 (1 every 20 ms) per player. If the `deficit` is negative, too many frames were sent, and if it's positive, not enough frames got sent. -
+
Example Payload ```json @@ -204,7 +204,7 @@ Server dispatched an event. See the [Event Types](#event-types) section for more | guildId | string | The guild id | | ... | ... | Extra fields depending on the event | -
+
Example Payload ```yaml @@ -236,7 +236,7 @@ Dispatched when a track starts playing. |-------|-------------------------------|--------------------------------| | track | [Track](rest.md#track) object | The track that started playing | -
+
Example Payload ```json @@ -287,7 +287,7 @@ Dispatched when a track ends. | `replaced` | The track was replaced | false | | `cleanup` | The track was cleaned up | false | -
+
Example Payload ```json @@ -345,7 +345,7 @@ Dispatched when a track throws an exception. | `suspicious` | The cause might not be exactly known, but is possibly caused by outside factors. For example when an outside service responds in a format that we do not expect | | `fault` | The probable cause is an issue with the library or there is no way to tell what the cause might be. This is the default level and other levels are used in cases where the thrower has more in-depth knowledge about the error | -
+
Example Payload ```json @@ -391,7 +391,7 @@ Dispatched when a track gets stuck while playing. | track | [Track](rest.md#track) object | The track that got stuck | | thresholdMs | int | The threshold in milliseconds that was exceeded | -
+
Example Payload ```json @@ -437,7 +437,7 @@ See the [Discord Docs](https://discord.com/developers/docs/topics/opcodes-and-st | reason | string | The close reason | | byRemote | bool | Whether the connection was closed by Discord | -
+
Example Payload ```json diff --git a/docs/changelog/index.md b/docs/changelog/index.md index 572a99faf..5c43ab435 100644 --- a/docs/changelog/index.md +++ b/docs/changelog/index.md @@ -26,7 +26,7 @@ The most noteworthy of these, as well as any features and breaking changes, are All websocket ops are removed as of `v4.0.0` and replaced with the following endpoints and json fields: -* `play` -> [Update Player Endpoint](#update-player) `encodedTrack` or `identifier` field +* `play` -> [Update Player Endpoint](#update-player) `track`->`encoded` or `track`->`identifier` field * `stop` -> [Update Player Endpoint](#update-player) `encodedTrack` field with `null` * `pause` -> [Update Player Endpoint](#update-player) `pause` field * `seek` -> [Update Player Endpoint](#update-player) `position` field diff --git a/docs/clients.md b/docs/clients.md index 5abff48ce..aed80496b 100644 --- a/docs/clients.md +++ b/docs/clients.md @@ -9,6 +9,7 @@ description: A list of Lavalink client libraries. | [Lavalink-Client](https://github.com/lavalink-devs/Lavalink-Client) | Java/Kotlin/JVM | JDA/Discord4J/**Any** | Uses reactor | | [Lavalink.kt](https://github.com/DRSchlaubi/Lavalink.kt) | Kotlin | Kord/JDA/**Any** | Kotlin Coroutines | | [DisGoLink](https://github.com/disgoorg/disgolink) | Go | **Any** | | +| [lavalink.py](https://github.com/devoxin/lavalink.py) | Python | **Any** | | | [Mafic](https://github.com/ooliver1/mafic) | Python | discord.py **V2**/nextcord/disnake/py-cord | | | [Wavelink](https://github.com/PythonistaGuild/Wavelink) | Python | discord.py **V2** | | | [Moonlink.js](https://github.com/1Lucas1apk/moonlink.js) | Node.js | **Any** | | @@ -20,8 +21,10 @@ description: A list of Lavalink client libraries. | [Riffy](https://github.com/riffy-team/riffy) | Node.js | **Any** | | | [DisCatSharp](https://github.com/Aiko-IT-Systems/DisCatSharp) | .NET | DisCatSharp | v10.4.2+ | | [Lavalink4NET](https://github.com/angelobreuer/Lavalink4NET) | .NET | Discord.Net/DSharpPlus/Remora | v4+ | +| [Nomia](https://github.com/DHCPCD9/Nomia) | .NET | DSharpPlus | | | [Coglink](https://github.com/PerformanC/Coglink) | C | Concord | | | [lavalink-rs](https://gitlab.com/vicky5124/lavalink-rs) | Rust, Python | **Any** | `tokio`-based, `asyncio`-based | +| [lavalink](https://github.com/nyxx-discord/nyxx_lavalink) | Dart | nyxx/**Any** | |
v3.7 supporting Client Libraries @@ -38,7 +41,6 @@ description: A list of Lavalink client libraries. | [Shoukaku](https://github.com/Deivu/Shoukaku) | Node.js | **Any** | | | [Cosmicord.js](https://github.com/SudhanPlayz/Cosmicord.js) | Node.js | **Any** | | | [DisCatSharp](https://github.com/Aiko-IT-Systems/DisCatSharp) | .NET | DisCatSharp | Only prior v10.4.1 | -| [Nomia](https://github.com/DHCPCD9/Nomia) | .NET | DSharpPlus | | | [Lavalink4NET](https://github.com/angelobreuer/Lavalink4NET) | .NET | Discord.Net/DSharpPlus | < v4 | | [DisGoLink](https://github.com/disgoorg/disgolink) | Go | **Any** | | diff --git a/docs/configuration/index.md b/docs/configuration/index.md index 91745d799..011613c41 100644 --- a/docs/configuration/index.md +++ b/docs/configuration/index.md @@ -8,7 +8,7 @@ The server configuration is done in `application.yml`. You can find an example b ## Example application.yml -
+
application.yml ```yaml title="application.yml" @@ -22,7 +22,7 @@ For arrays, the index is appended to the key, starting at 0. For example, `LAVAL ## Example environment variables -
+
environment variables ```env title="enviroment variables" diff --git a/ROUTEPLANNERS.md b/docs/configuration/routeplanner.md similarity index 97% rename from ROUTEPLANNERS.md rename to docs/configuration/routeplanner.md index 2acf184f9..f2721003f 100644 --- a/ROUTEPLANNERS.md +++ b/docs/configuration/routeplanner.md @@ -1,4 +1,6 @@ -# RoutePlanner Strategies +--- +description: Lavalink RoutePlanner Strategies +--- ## Terminology diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 7214bf763..1434f86d2 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -24,6 +24,7 @@ nav: - Binary: configuration/binary.md - Systemd: configuration/systemd.md - Docker: configuration/docker.md + - RoutePlanner: configuration/routeplanner.md - Clients: clients.md - Plugins: plugins.md - API: diff --git a/docs/plugins.md b/docs/plugins.md index 4ea709419..e285e3ec0 100644 --- a/docs/plugins.md +++ b/docs/plugins.md @@ -20,5 +20,7 @@ for instructions. | [DuncteBot plugin](https://github.com/DuncteBot/skybot-lavalink-plugin) | Additional source managers that are not widely used | | [Extra Filter plugin](https://github.com/rohank05/lavalink-filter-plugin) | Additional audio filters for lavalink | | [XM plugin](https://github.com/esmBot/lava-xm-plugin) | Support for various [music tracker module](https://en.wikipedia.org/wiki/Module_file) formats | +| [Lyrics.kt plugin](https://github.com/DRSchlaubi/lyrics.kt) | Plugin that fetches timestamped lyrics from YouTube | +| [Java Timed Lyrics](https://github.com/DuncteBot/java-timed-lyrics) | Timestamped lyrics from YouTube with Genius fallback, supports IP-rotation | -If you want to make your own plugin see [here](api/plugins.md) \ No newline at end of file +If you want to make your own plugin see [here](api/plugins.md)