var builder = Host.CreateApplicationBuilder(args); builder.Services.Configure(static options => options.ShutdownTimeout = TimeSpan.FromSeconds(30)); builder.Services.AddOptions() .BindConfiguration(nameof(DiscordClientOptions)); builder.Services.AddSingleton(static sp => { var discordOptions = sp.GetRequiredService>().Value; return discordOptions; }); builder.Services.AddSingleton(); builder.Services.AddSingleton(TimeProvider.System); builder.Services.AddDiscordRestClient(); builder.Services.AddDiscordGatewayClient(static (client) => client.On(DiscordEventTypes.MessageCreate, WelcomeMessageHandler.HandleAsync) ); builder.Services.AddHostedService(); var host = builder.Build(); await host.RunAsync();