Skip to content
Diekoloreoluwa Mayowa Akinsete edited this page Feb 22, 2023 · 14 revisions

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.

Introduction

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.

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.

🎒 Resources




🧰 Lavalink Setup

Before we get to programming, we need to download the latest version of Lavalink and Application.yml.

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.

🧰 Victoria Setup

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 url https://www.myget.org/F/yucked/api/v3/index.json.