Skip to content

πŸŒ‹ - Lavalink wrapper for Discord.NET. Provides more options and performs better than all .NET Lavalink libraries combined.

Notifications You must be signed in to change notification settings

Yucked/Victoria

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


πŸŒ‹ - Lavalink wrapper for Discord.NET which provides more options and performs better than all .NET Lavalink libraries combined.

Changelog v7.0

Victoria 7.x rewrites focuses on Lavalink v4 support. Lavalink v4 introduces several changes which break Victoria's functionality on v6.x, to avoid codebase overhaul on user's end, breaking changes are minimal on Victoria' end.

βž• Additions:

  • ExceptionSeverity for Lavalink exceptions
  • Introduced ISRC, SourceName, PluginInfo, Artwork properties in LavaTrack
  • Added LavaNodeExtensions, LavaPlayerExtensions for non-API methods.
  • Added GetLavalinkVersionAsync, GetLavalinkStatsAsync, UpdatePlayerAsync, UpdateSessionAsync, DestroyPlayerAsync methods to LavaNode.

❌ Removals:

  • ArtworkResolver, LyricsResolver have been moved to Victoria.Addons, this will be a separate package.
  • Removed Bands, TextChannel, VoiceChannel, IsConnected properties from LavaPlayer.

πŸ’€ Modifications:

  • Vueue is renamed to LavaQueue, this change my be reverted.
  • LavaPlayer no longer contains any methods for controlling the player.
  • RoutePlanner has been merged with LavaNode.

Quick Start

Full example code @ https://github.com/Yucked/Victoria/tree/examples/v7

🐲 Program.cs

            var serviceCollection = new ServiceCollection()
                // .. other services
                .AddLogging(x => {
                    x.ClearProviders();
                    x.AddColorfulConsole();
                    x.SetMinimumLevel(LogLevel.Trace);
                })
                .AddLavaNode()                
                .AddSingleton<AudioService>();

πŸ€– Discord Service / Events Handler

        private async Task OnReadyAsync() {
            // connect to lavalink
            await _serviceProvider.UseLavaNodeAsync();
        }

🎸 AudioModule.cs

    [Command("Join")]
    public async Task JoinAsync() {
        var voiceState = Context.User as IVoiceState;
        if (voiceState?.VoiceChannel == null) {
            await ReplyAsync("You must be connected to a voice channel!");
            return;
        }
        
        try {
            await lavaNode.JoinAsync(voiceState.VoiceChannel);
            await ReplyAsync($"Joined {voiceState.VoiceChannel.Name}!");
            
            audioService.TextChannels.TryAdd(Context.Guild.Id, Context.Channel.Id);
        }
        catch (Exception exception) {
            await ReplyAsync(exception.ToString());
        }
    }