-
Notifications
You must be signed in to change notification settings - Fork 47
Home
Welcome to Victoria's long overdue documentation! Victoria is an asynchronous Lavalink 🌋 wrapper for Discord.NET which provides more options and performs better than all .NET Lavalink libraries combined.
Victoria utilizes several advance concepts similar to Discord.NET. The code style is rather easy to follow. Objects, properties and methods follow simple naming conventions. The main objects in Victoria are the following:
- LavaNode represents a single connection to a Lavalink server. If you've mulitple Lavalink servers running, you'd need multiple LavaNodes for each server. Furthermore, you can use them for load balancing purposes.
- LavaConfig is used to configure connection and configuration for each LavaNode.
- LavaPlayer represents a single voice channel connection or guild connection. One guild can only have a single LavaPlayer.
- LavaSocket is a wrapper around ClientWebSocket since ClientWebSocket lacks features such as Auto-Reconnect, Events and so on.
- DefaultQueue is based on LinkedList. Why not Queue or ConcurrentQueue? Simply because of limitations and difficulty in terms of extensions.
If you're new to programming in general I suggest you utilize the following resources to familiarize yourself with C# and .NET ecosystem.
- Official C# Documentation: https://docs.microsoft.com/en-us/dotnet/csharp/
- Official .NET Documentation: https://docs.microsoft.com/en-us/dotnet/
Older versions of Victoria have used .NET Standard and these versions include: 1.x, 2.x, 3.x. Versions from 4.x and above target .NET Core by default.
- Victoria discord server: https://discord.gg/TXz6sKA
- Discord.NET documentation: https://docs.stillu.cc/index.html
- Discord.NET discord channel: https://discordapp.com/invite/jkrBmQR
Before we get to programming, we need to download the latest version of Lavalink and Application.yml.
- GitHub: You can get an official release of Lavalink from their GitHub release section. https://github.com/freyacodes/Lavalink/releases
- CI Server: If you believe Lavalink is misbehaving (tracks not playing, etc) then you can check CI releases. Chances are there is a fix out already. https://ci.fredboat.com/viewLog.html?buildId=lastSuccessful&buildTypeId=Lavalink_Build&tab=artifacts&guest=1
- application.yml: Once you've Lavalink downloaded it's time to create a new file application.yml. This file holds Lavalink configuration. https://github.com/freyacodes/Lavalink/blob/master/LavalinkServer/application.yml.example
To start Lavalink, open a new shell window where Lavalink is located at and type in: java -jar Lavalink.jar
‼️ It is recommended to put Lavalink and application.yml in the same directory. You'd be better off creating a new folder called Lavalink server and place everything in it.
Once you've Lavalink up and running, you can then install Victoria from following sources:
-
Nuget: Major/Minor releases are pushed to Nuget once enough changes are available. Versioning is as follow:
- Major: Code redesign
- Minor: Addition/Removal of a method or changing interface structure, etc.
- Patch: Patch releases are usually quick bug fixes
- From CMD/PWSH/Terminal in the root of your project, type
dotnet add package Victoria
to install Victoria
-
MyGet: Small bug fixes and early preview versions are pushed to MyGet before landing on Nuget. In later .NET Core versions you can specify an
<RestoreAdditionalProjectSources>
tag in your project file(.csproj)
. MyGet feed urlhttps://www.myget.org/F/yucked/api/v3/index.json
.