private void Start(string[] args) { #if !DNXCORE50 Console.Title = $"{AppName} (Discord.Net v{DiscordConfig.LibVersion})"; #endif GlobalSettings.Load(); _client = new DiscordClient(x => { x.AppName = AppName; x.AppUrl = AppUrl; x.MessageCacheSize = 0; x.UsePermissionsCache = true; x.EnablePreUpdateEvents = true; x.LogLevel = LogSeverity.Verbose; x.LogHandler = OnLogMessage; }) .UsingCommands(x => { x.AllowMentionPrefix = true; x.HelpMode = HelpMode.Public; x.ExecuteHandler = OnCommandExecuted; x.ErrorHandler = OnCommandError; }) .UsingModules() //.UsingAudio(x => //{ // x.Mode = AudioMode.Outgoing; // x.EnableMultiserver = true; // x.EnableEncryption = true; // x.Bitrate = AudioServiceConfig.MaxBitrate; // x.BufferLength = 10000; //}) .UsingPermissionLevels(PermissionResolver); _client.AddService <SettingsService>(); _client.AddService <HttpService>(); _client.AddModule <AdminModule>("Admin", ModuleFilter.None); //_client.AddModule<ColorsModule>("Colors", ModuleFilter.None); _client.AddModule <FeedModule>("Feeds", ModuleFilter.None); _client.AddModule <GithubModule>("Repos", ModuleFilter.None); _client.AddModule <GImagesModule>("GImages", ModuleFilter.None); _client.AddModule <ModulesModule>("Modules", ModuleFilter.None); _client.AddModule <PublicModule>("Public", ModuleFilter.None); _client.AddModule <TwitchModule>("Twitch", ModuleFilter.None); _client.AddModule <SedModule>("SedModule", ModuleFilter.None); _client.AddModule <StatusModule>("Status", ModuleFilter.None); _client.AddModule <TwitchEmotesModule>("TwitchEmotes", ModuleFilter.None); _client.AddModule <TwitterModule>("TwitterModule", ModuleFilter.None); _client.AddModule <Waifu2xModule>("Waifu2xModule", ModuleFilter.None); //_client.AddModule(new ExecuteModule(env, exporter), "Execute", ModuleFilter.ServerWhitelist); #if PRIVATE PrivateModules.Install(_client); #endif //Convert this method to an async function and connect to the server //DiscordClient will automatically reconnect once we've established a connection, until then we loop on our end //Note: ExecuteAndWait is only needed for Console projects as Main can't be declared as async. UI/Web applications should *not* use this function. _client.ExecuteAndWait(async() => { while (true) { try { if (GlobalSettings.Discord.Token != null) { await _client.Connect(GlobalSettings.Discord.Token); } else { await _client.Connect(GlobalSettings.Discord.Email, GlobalSettings.Discord.Password); } //await _client.ClientAPI.Send(new Discord.API.Client.Rest.HealthRequest()); break; } catch (Exception ex) { _client.Log.Error($"Login Failed", ex); await Task.Delay(_client.Config.FailedReconnectDelay); } } }); }