public BotService(
            ILoggerFactory loggerFactory,
            IOptions <BotConfig> botConfig,
            IBotAccessProviderBuilder dataAccessProviderBuilder,
            IDateTimeZoneProvider timeZoneProvider,
            IServiceProvider services)
        {
            DiscordConfiguration ClientConfig = new DiscordConfiguration
            {
                Token           = botConfig.Value.BotToken,
                TokenType       = TokenType.Bot,
                MinimumLogLevel = LogLevel.Information,
                LoggerFactory   = loggerFactory,
                Intents         = DiscordIntents.All,
            };

            this.commandsConfig = new CommandsNextConfiguration
            {
                PrefixResolver      = PrefixResolver,
                Services            = services,
                EnableDms           = true,
                EnableMentionPrefix = true,
            };

            this.interactivityConfig = new InteractivityConfiguration
            {
                PaginationBehaviour = PaginationBehaviour.Ignore,
                Timeout             = TimeSpan.FromMinutes(2),
            };


            this.Client           = new DiscordShardedClient(ClientConfig);
            this._devUserId       = botConfig.Value.DevId;
            this.logger           = loggerFactory.CreateLogger("BotService");
            this.providerBuilder  = dataAccessProviderBuilder;
            this.timeZoneProvider = timeZoneProvider;

            using IBotAccessProvider provider = providerBuilder.Build();
            provider.Migrate();
        }