public async Task StartAsync(CancellationToken stoppingToken) { // Configuration settings for bot var botConfig = new DiscordConfiguration { AutoReconnect = true, Token = _settings.Discord.Token, TokenType = TokenType.Bot, LoggerFactory = _factory }; var cmdConfig = new CommandsNextConfiguration { EnableDefaultHelp = true, EnableDms = false, EnableMentionPrefix = true, Services = _sp, StringPrefixes = _settings.Discord.CommandPrefixes }; var interactivityConfig = new InteractivityConfiguration { Timeout = TimeSpan.FromSeconds(30), PaginationBehaviour = DSharpPlus.Interactivity.Enums.PaginationBehaviour.WrapAround, PaginationDeletion = DSharpPlus.Interactivity.Enums.PaginationDeletion.DeleteEmojis }; // Initialize the bot _discordClient = new DiscordClient(botConfig); _discordClient.UseCommandsNext(cmdConfig); _discordClient.UseInteractivity(interactivityConfig); // Add commands using assembly reflection // This will load all the commands from the commands folder _discordClient.GetCommandsNext().RegisterCommands(Assembly.GetEntryAssembly()); // Event listeners for guild activity _discordClient.GuildCreated += _discordClient_GuildHandler; _discordClient.GuildAvailable += _discordClient_GuildHandler; _discordClient.GuildDeleted += _discordClient_GuildDeleted; // Event listeners for bot actions _watcherService.OnGameAction += _watcherService_OnGameActionHandler; _watcherService.OnPlayerAction += _watcherService_OnPlayerActionHandler; await _discordClient.ConnectAsync(); await _watcherService.StartAsync(stoppingToken); }