internal async Task RunAsync(Configuration configuration, int shardId, int shardCount, string dbPath) { LogLevel level; switch (configuration.LogLevel.ToLower()) { case "debug": level = LogLevel.Debug; break; case "warning": level = LogLevel.Warning; break; case "error": level = LogLevel.Error; break; case "critical": level = LogLevel.Critical; break; default: level = LogLevel.Info; break; } client = new DiscordClient(new DiscordConfiguration { AutoReconnect = true, LogLevel = level, Token = configuration.Token, TokenType = TokenType.Bot, ShardCount = shardCount, ShardId = shardId, UseInternalLogHandler = true }); Events.supportGuildId = configuration.SupportId; client.Ready += Events.OnClientReady; client.Resumed += Events.OnClientResumed; client.ClientErrored += Events.OnClientError; client.SocketErrored += Events.OnClientSocketError; client.GuildAvailable += Events.OnGuildJoin; client.GuildCreated += Events.OnGuildJoin; client.GuildDeleted += Events.OnGuildLeave; client.MessageCreated += AFK.AFKMessageHandler; client.MessageReactionAdded += Starboard.ReactionAddHandler; client.MessageReactionRemoved += Starboard.ReactionRemoveHandler; client.MessageReactionRemovedEmoji += Starboard.ReactionRemoveEmojiHandler; client.MessageReactionsCleared += Starboard.ReactionRemoveAllHandler; commands = client.UseCommandsNext(new CommandsNextConfiguration { CaseSensitive = true, EnableDefaultHelp = true, EnableDms = true, EnableMentionPrefix = true, IgnoreExtraArguments = true, StringPrefixes = configuration.Prefixes, }); commands.SetHelpFormatter <Help>(); commands.CommandExecuted += Events.OnCommandExecute; commands.CommandErrored += Events.OnCommandError; commands.RegisterCommands <Fun>(); commands.RegisterCommands <Info>(); commands.RegisterCommands <Moderation>(); commands.RegisterCommands <NSFW>(); commands.RegisterCommands <Owner>(); commands.RegisterCommands <Search>(); //commands.RegisterCommands<Settings>(); client.UseInteractivity(new InteractivityConfiguration { PaginationBehaviour = PaginationBehaviour.Ignore, PaginationDeletion = PaginationDeletion.DeleteEmojis, PollBehaviour = PollBehaviour.DeleteEmojis }); IMDb.InitializeWithKey(configuration.OMDb); Managers.Google.InitializeService(configuration.Google.Key, configuration.Google.Cx); await Spotify.AuthorizeAsync(configuration.Spotify.ID, configuration.Spotify.Secret, client.DebugLogger); await Database.ConnectAsync(dbPath, client.DebugLogger); garbage = new GarbageCollection(); AppDomain.CurrentDomain.ProcessExit += new EventHandler((s, e) => HandleProcessQuit().GetAwaiter().GetResult()); Emojis.Initialize(configuration.Emojis.Success, configuration.Emojis.Warning, configuration.Emojis.Error, configuration.Emojis.Online, configuration.Emojis.Idle, configuration.Emojis.DoNotDisturb, configuration.Emojis.Offline); await client.ConnectAsync(new DiscordActivity(configuration.Status.Name, configuration.Status.Type)); await Task.Delay(-1); }