Example #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   = false;
                x.EnablePreUpdateEvents = true;
                x.LogLevel              = LogSeverity.Info;
                x.LogHandler            = OnLogMessage;
            })

                      .UsingCommands(x =>
            {
                x.PrefixChar         = '!';
                x.AllowMentionPrefix = false;
                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)

                      .AddService <SettingsService>()
                      .AddService <HttpService>()

                      .AddModule <AdminModule>("Admin", ModuleFilter.ServerWhitelist)
                      .AddModule <ColorsModule>("Colors", ModuleFilter.ServerWhitelist)
                      //.AddModule<FeedModule>("Feeds", ModuleFilter.ServerWhitelist)
                      //.AddModule<GithubModule>("Repos", ModuleFilter.ServerWhitelist)
                      .AddModule <ModulesModule>("Modules", ModuleFilter.None)
                      .AddModule <PublicModule>("Public", ModuleFilter.None)
                      .AddModule <TwitchModule>("Twitch", ModuleFilter.None)
                      .AddModule <StatusModule>("Status", ModuleFilter.ServerWhitelist)
                      .AddModule <Music>("Music", ModuleFilter.ServerWhitelist)
                      .AddModule <DiscordBot.Modules.Sql.sql>("sql", ModuleFilter.None);

            PublicModule.loadgods();

            //.AddModule(new ExecuteModule(env, exporter), "Execute", ModuleFilter.ServerWhitelist);

#if PRIVATE
            PrivateModules.Install(_client);
#endif

            /* IAudioClient test = new IAudioClient();
             * test.*/
            //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.UserJoined += async(s, e) =>
            {
                DiscordBot.Modules.Sql.sql sqll = new Modules.Sql.sql();
                string message = sqll.getsinglevalue("servers", "server = " + e.Server.Id, "welcome");
                if (message != "" && message != null && message.Length > 0)
                {
                    Channel pm = await _client.CreatePrivateChannel(e.User.Id);

                    await pm.SendMessage(message);
                }
            };

            _client.ExecuteAndWait(async() =>
            {
                while (true)
                {
                    try
                    {
                        await _client.Connect(GlobalSettings.Discord.Email, GlobalSettings.Discord.Password);
                        _client.SetGame("O Bot");
                        break;
                    }
                    catch (Exception ex)
                    {
                        _client.Log.Error($"Login Failed", ex);
                        await Task.Delay(_client.Config.FailedReconnectDelay);
                    }
                }
            });
        }