How do I set up my services when using v6 version ?
Closed this issue · 2 comments
AsakaJX commented
I'm getting this exception on v6 version: No constructor for type 'Victoria.Node.LavaNode' can be instantiated using services from the service container and default values.
I'm using sample from docs for v6+ version.
This is what I use before that:
private readonly DiscordSocketClient _client;
private readonly ServiceProvider _services;
private readonly LavaNode _lavaNode;
public BotHandler() {
_services = ConfigureServices();
_client = _services.GetRequiredService<DiscordSocketClient>();
...
_lavaNode = _services.GetRequiredService<LavaNode>();
}
This is my ServiceProvider:
private ServiceProvider ConfigureServices() => new ServiceCollection()
.AddSingleton<TheSwarmManager.Services.Audio.AudioService>()
.AddSingleton<LavaNode>()
.AddSingleton<DiscordSocketClient>()
.AddSingleton(x => new DiscordSocketClient(new DiscordSocketConfig {
GatewayIntents = Discord.GatewayIntents.All,
LogGatewayIntentWarnings = false,
AlwaysDownloadUsers = true,
UseInteractionSnowflakeDate = false
}))
.AddLogging(config =>
config.AddDebug().AddConsole()
)
...
.BuildServiceProvider();
BlyZeYT commented
private ServiceProvider ConfigureServices() => new ServiceCollection()
.AddSingleton<TheSwarmManager.Services.Audio.AudioService>()
.AddSingleton<LavaNode>()
.AddSingleton<DiscordSocketClient>()
.AddLavaNode(...) // like this
.AddSingleton(x => new DiscordSocketClient(new DiscordSocketConfig {
GatewayIntents = Discord.GatewayIntents.All,
LogGatewayIntentWarnings = false,
AlwaysDownloadUsers = true,
UseInteractionSnowflakeDate = false
}))
.AddLogging(config =>
config.AddDebug().AddConsole()
)
...
.BuildServiceProvider();
AsakaJX commented
private ServiceProvider ConfigureServices() => new ServiceCollection() .AddSingleton<TheSwarmManager.Services.Audio.AudioService>() .AddSingleton<LavaNode>() .AddSingleton<DiscordSocketClient>() .AddLavaNode(...) // like this .AddSingleton(x => new DiscordSocketClient(new DiscordSocketConfig { GatewayIntents = Discord.GatewayIntents.All, LogGatewayIntentWarnings = false, AlwaysDownloadUsers = true, UseInteractionSnowflakeDate = false })) .AddLogging(config => config.AddDebug().AddConsole() ) ... .BuildServiceProvider();
Thank you! That worked, I for some reason couldn't find that method before, I thought it was removed, lol. Ty again!