Fix deadlock and auto leave voice channel after 3 min (#4)

* Fix for thread being busy handling discord commands blocking audioplayer to timeout
* Auto leave if alone in voice channel after 3 min

Co-authored-by: Myx <info@azaaxin.com>
This commit is contained in:
2024-08-12 02:02:10 +02:00
committed by GitHub
parent 9bcebea6b0
commit 8dcd4b334d
4 changed files with 106 additions and 57 deletions

View File

@@ -6,6 +6,7 @@ using Lunaris2.Handler.ChatCommand;
using Lavalink4NET.Extensions;
using Lunaris2.Handler.MusicPlayer;
using Lunaris2.Notification;
using Lunaris2.Service;
using Lunaris2.SlashCommand;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
@@ -41,10 +42,7 @@ public class Program
.Build();
services
.AddSingleton(client)
.AddMediatR(mediatRServiceConfiguration => mediatRServiceConfiguration.RegisterServicesFromAssembly(Assembly.GetExecutingAssembly()))
.AddSingleton<DiscordEventListener>()
.AddSingleton(service => new InteractionService(service.GetRequiredService<DiscordSocketClient>()))
.AddLavalink()
.ConfigureLavalink(options =>
{
@@ -58,6 +56,10 @@ public class Program
.AddSingleton<LavaNode>()
.AddSingleton<MusicEmbed>()
.AddSingleton<ChatSettings>()
.AddSingleton(client)
.AddSingleton<DiscordEventListener>()
.AddSingleton<VoiceChannelMonitorService>()
.AddSingleton(service => new InteractionService(service.GetRequiredService<DiscordSocketClient>()))
.Configure<ChatSettings>(configuration.GetSection("LLM"));
client.Ready += () => Client_Ready(client);
@@ -86,6 +88,8 @@ public class Program
private static Task Client_Ready(DiscordSocketClient client)
{
client.RegisterCommands();
new VoiceChannelMonitorService(client).StartMonitoring();
return Task.CompletedTask;
}