Example #1
0
        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);
        }