コード例 #1
0
        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);
                    }
                }
            });
        }