コード例 #1
0
 public PublisherService(DiscordSocketClient client, DatabaseService databaseService, Settings.Deserialized.Settings settings)
 {
     _client            = client;
     _databaseService   = databaseService;
     _verificationCodes = new Dictionary <uint, string>();
     _settings          = settings;
 }
コード例 #2
0
        public DatabaseService(ILoggingService logging, Settings.Deserialized.Settings settings)
        {
            ConnectionString = settings.DbConnectionString;
            _logging         = logging;

            DbConnection c = null;

            try
            {
                c           = new MySqlConnection(ConnectionString);
                _connection = c.As <IServerUserRepo>();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            try
            {
                _connection.TestConnection();
            }
            catch (Exception)
            {
                Console.WriteLine("Table 'users' does not exist, attempting to generate..");
                c.ExecuteSql(
                    $"CREATE TABLE `users` (`ID` int(11) UNSIGNED  NOT NULL, `UserID` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, `Karma` int(11) UNSIGNED  NOT NULL DEFAULT 0, `KarmaGiven` int(11) UNSIGNED NOT NULL DEFAULT 0, `Exp` bigint(11) UNSIGNED  NOT NULL DEFAULT 0, `Level` int(11) UNSIGNED NOT NULL DEFAULT 0) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci");
                c.ExecuteSql($"ALTER TABLE `users` ADD PRIMARY KEY (`ID`,`UserID`), ADD UNIQUE KEY `UserID` (`UserID`)");
                c.ExecuteSql($"ALTER TABLE `users` MODIFY `ID` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1");
            }
        }
コード例 #3
0
        public ModerationService(DiscordSocketClient client, Settings.Deserialized.Settings settings, ILoggingService loggingService)
        {
            _settings       = settings;
            _loggingService = loggingService;

            client.MessageDeleted += MessageDeleted;
        }
コード例 #4
0
        public TicketModule(Settings.Deserialized.Settings settings, CommandHandlingService commandHandlingService)
        {
            _settings = settings;

            Task.Run(async() =>
            {
                var commands = await commandHandlingService.GetCommandList("TicketModule", true, true, false);
                _commandList = commands.MessageSplitToSize();
            });
        }
コード例 #5
0
 public CasinoService(ILoggingService logging, UpdateService updateService, DatabaseService databaseService,
                      Settings.Deserialized.Settings settings)
 {
     _loggingService  = logging;
     _updateService   = updateService;
     _databaseService = databaseService;
     _settings        = settings;
     _random          = new Random();
     LoadData();
     UpdateLoop();
 }
コード例 #6
0
 public ModerationModule(ILoggingService logging, PublisherService publisher, UpdateService update, UserService user,
                         DatabaseService database, Rules rules, Settings.Deserialized.Settings settings)
 {
     _logging   = logging;
     _publisher = publisher;
     _update    = update;
     _user      = user;
     _database  = database;
     _rules     = rules;
     _settings  = settings;
 }
コード例 #7
0
        public ReactRoleService(DiscordSocketClient client, ILoggingService logging, Settings.Deserialized.Settings settings)
        {
            _loggingService = logging;
            _settings       = settings;

            _client = client;
            _client.ReactionAdded   += ReactionAdded;
            _client.ReactionRemoved += ReactionRemoved;

            // Event so we can Initialize
            _client.Ready += ClientIsReady;
        }
コード例 #8
0
        public UpdateService(DiscordSocketClient client,
                             DatabaseService databaseService, Settings.Deserialized.Settings settings, FeedService feedService)
        {
            _client          = client;
            _databaseService = databaseService;
            _feedService     = feedService;

            _settings = settings;
            _token    = new CancellationToken();

            UpdateLoop();
        }
コード例 #9
0
ファイル: UserModule.cs プロジェクト: pioj/UDHBot
 public UserModule(LoggingService loggingService, DatabaseService databaseService, UserService userService,
                   PublisherService publisherService, UpdateService updateService, Rules rules
                   , Settings.Deserialized.Settings settings)
 {
     _loggingService   = loggingService;
     _databaseService  = databaseService;
     _userService      = userService;
     _publisherService = publisherService;
     _updateService    = updateService;
     _rules            = rules;
     _settings         = settings;
 }
コード例 #10
0
        public UpdateService(DiscordSocketClient client, LoggingService loggingService, PublisherService publisherService,
                             DatabaseService databaseService, AnimeService animeService, Settings.Deserialized.Settings settings)
        {
            _client           = client;
            _loggingService   = loggingService;
            _publisherService = publisherService;
            _databaseService  = databaseService;
            _animeService     = animeService;
            _settings         = settings;
            _token            = new CancellationToken();
            _random           = new Random();

            UpdateLoop();
        }
コード例 #11
0
 public ModerationModule(ILoggingService logging, UserService user,
                         DatabaseService database, Rules rules, Settings.Deserialized.Settings settings, CommandHandlingService commandHandlingService)
 {
     _logging  = logging;
     _user     = user;
     _database = database;
     _rules    = rules;
     _settings = settings;
     Task.Run(async() =>
     {
         var commands =
             await commandHandlingService.GetCommandList("ModerationModule", true, true, false);
         _commandList = commands.MessageSplitToSize();
     });
 }
コード例 #12
0
        public CommandHandlingService(
            DiscordSocketClient client,
            CommandService commandService,
            IServiceProvider services,
            Settings.Deserialized.Settings settings
            )
        {
            _client         = client;
            _commandService = commandService;
            _services       = services;
            _settings       = settings;

            /*
             * Event subscriptions
             */
            _client.MessageReceived += HandleCommand;
        }
コード例 #13
0
        public UserModule(IServiceProvider serviceProvider, Settings.Deserialized.Settings settings, Rules rules)
        {
            _databaseService  = serviceProvider.GetService <DatabaseService>();
            _userService      = serviceProvider.GetService <UserService>();
            _publisherService = serviceProvider.GetService <PublisherService>();
            _updateService    = serviceProvider.GetService <UpdateService>();
            _currencyService  = serviceProvider.GetService <CurrencyService>();
            _rules            = rules;
            _settings         = settings;

            var commandHandlingService = serviceProvider.GetService <CommandHandlingService>();

            Task.Run(async() =>
            {
                var commands = await commandHandlingService.GetCommandList("UserModule", false, true, false);
                //TODO Work out a decent way to remove duplicates?
                _commandList = commands.MessageSplitToSize();
            });
        }
コード例 #14
0
ファイル: DatabaseService.cs プロジェクト: SimplyJpk/UDC-Bot
 public DatabaseService(ILoggingService logging, Settings.Deserialized.Settings settings)
 {
     _settings   = settings;
     _connection = _settings.DbConnectionString;
     _logging    = logging;
 }
コード例 #15
0
ファイル: AudioService.cs プロジェクト: SimplyJpk/UDC-Bot
 public AudioService(ILoggingService logging, DiscordSocketClient client, Settings.Deserialized.Settings settings)
 {
     _logging  = logging;
     _client   = client;
     _settings = settings;
 }
コード例 #16
0
 public AnimeService(DiscordSocketClient client, LoggingService loggingService, Settings.Deserialized.Settings settings)
 {
     _client         = client;
     _loggingService = loggingService;
     _settings       = settings;
 }
コード例 #17
0
ファイル: CasinoModule.cs プロジェクト: zulfajuniadi/UDHBot
 public CasinoModule(CasinoService casinoService, Settings.Deserialized.Settings settings)
 {
     _casinoService = casinoService;
     _settings      = settings;
 }
コード例 #18
0
 public LoggingService(DiscordSocketClient client, Settings.Deserialized.Settings settings)
 {
     _client   = client;
     _settings = settings;
 }
コード例 #19
0
        //TODO: Add custom commands for user after (30karma ?/limited to 3 ?)

        public UserService(DatabaseService databaseService, LoggingService loggingService, UpdateService updateService,
                           Settings.Deserialized.Settings settings, UserSettings userSettings)
        {
            rand                    = new Random();
            _databaseService        = databaseService;
            _loggingService         = loggingService;
            _updateService          = updateService;
            _settings               = settings;
            _userSettings           = userSettings;
            _mutedUsers             = new Dictionary <ulong, DateTime>();
            _xpCooldown             = new Dictionary <ulong, DateTime>();
            _canEditThanks          = new HashSet <ulong>(32);
            _thanksCooldown         = new Dictionary <ulong, DateTime>();
            _thanksReminderCooldown = new Dictionary <ulong, DateTime>();
            _codeReminderCooldown   = new Dictionary <ulong, DateTime>();

            _noXpChannels = new List <ulong>
            {
                _settings.BotCommandsChannel.Id, _settings.CasinoChannel.Id, _settings.MusicCommandsChannel.Id
            };

            /*
             * Init font for the profile card
             */
            _fontCollection = new FontCollection();

            /*_defaultFont = _fontCollection
             *  .Install(SettingsHandler.LoadValueString("serverRootPath", JsonFile.Settings) +
             *           "/fonts/OpenSans-Regular.ttf")
             *  .CreateFont(16);*/
            _nameFont = _fontCollection
                        .Install($"{_settings.ServerRootPath}/fonts/Consolas.ttf")
                        .CreateFont(22);
            _xpFont = _fontCollection
                      .Install($"{_settings.ServerRootPath}/fonts/Consolas.ttf")
                      .CreateFont(12);
            _ranksFont = _fontCollection
                         .Install($"{_settings.ServerRootPath}/fonts/Consolas.ttf")
                         .CreateFont(16);
            _levelTextFont = _fontCollection
                             .Install($"{_settings.ServerRootPath}/fonts/ConsolasBold.ttf")
                             .CreateFont(22);
            _levelNumberFont = _fontCollection
                               .Install($"{_settings.ServerRootPath}/fonts/ConsolasBold.ttf")
                               .CreateFont(30);

            _subtitlesWhiteFont = _fontCollection
                                  .Install($"{_settings.ServerRootPath}/fonts/OpenSansEmoji.ttf")
                                  .CreateFont(75);

            /*
             * Init XP
             */
            _xpMinPerMessage = _userSettings.XpMinPerMessage;
            _xpMaxPerMessage = _userSettings.XpMaxPerMessage;
            _xpMinCooldown   = _userSettings.XpMinCooldown;
            _xpMaxCooldown   = _userSettings.XpMaxCooldown;

            /*
             * Init thanks
             */
            StringBuilder sbThanks = new StringBuilder();
            var           thx      = _userSettings.Thanks;

            sbThanks.Append("(?i)\\b(");
            foreach (var t in thx)
            {
                sbThanks.Append(t).Append("|");
            }

            sbThanks.Length--; //Efficiently remove the final pipe that gets added in final loop, simplifying loop
            sbThanks.Append(")\\b");
            _thanksRegex                = sbThanks.ToString();
            _thanksCooldownTime         = _userSettings.ThanksCooldown;
            _thanksReminderCooldownTime = _userSettings.ThanksReminderCooldown;
            _thanksMinJoinTime          = _userSettings.ThanksMinJoinTime;

            /*
             * Init Code analysis
             */
            _codeReminderCooldownTime = _userSettings.CodeReminderCooldown;
            _codeFormattingExample    = (
                @"\`\`\`cs" + Environment.NewLine +
                "Write your code on new line here." + Environment.NewLine +
                @"\`\`\`" + Environment.NewLine);
            _codeReminderFormattingExample = (
                _codeFormattingExample + Environment.NewLine +
                "Simple as that! If you'd like me to stop reminding you about this, simply type \"!disablecodetips\"");

            LoadData();
            UpdateLoop();
        }
コード例 #20
0
        //TODO: Add custom commands for user after (30karma ?/limited to 3 ?)

        public UserService(DiscordSocketClient client, DatabaseService databaseService, ILoggingService loggingService, UpdateService updateService,
                           Settings.Deserialized.Settings settings, UserSettings userSettings, Rules rules)
        {
            _client                 = client;
            rand                    = new Random();
            _databaseService        = databaseService;
            _loggingService         = loggingService;
            _updateService          = updateService;
            _settings               = settings;
            _userSettings           = userSettings;
            _rules                  = rules;
            _mutedUsers             = new Dictionary <ulong, DateTime>();
            _xpCooldown             = new Dictionary <ulong, DateTime>();
            _canEditThanks          = new HashSet <ulong>(32);
            _thanksCooldown         = new Dictionary <ulong, DateTime>();
            _thanksReminderCooldown = new Dictionary <ulong, DateTime>();
            _codeReminderCooldown   = new Dictionary <ulong, DateTime>();

            _noXpChannels = new List <ulong>
            {
                _settings.BotCommandsChannel.Id, _settings.CasinoChannel.Id, _settings.MusicCommandsChannel.Id
            };

            /*
             * Init XP
             */
            _xpMinPerMessage = _userSettings.XpMinPerMessage;
            _xpMaxPerMessage = _userSettings.XpMaxPerMessage;
            _xpMinCooldown   = _userSettings.XpMinCooldown;
            _xpMaxCooldown   = _userSettings.XpMaxCooldown;

            /*
             * Init thanks
             */
            StringBuilder sbThanks = new StringBuilder();
            var           thx      = _userSettings.Thanks;

            sbThanks.Append("(?i)\\b(");
            foreach (var t in thx)
            {
                sbThanks.Append(t).Append("|");
            }

            sbThanks.Length--; //Efficiently remove the final pipe that gets added in final loop, simplifying loop
            sbThanks.Append(")\\b");
            _thanksRegex                = sbThanks.ToString();
            _thanksCooldownTime         = _userSettings.ThanksCooldown;
            _thanksReminderCooldownTime = _userSettings.ThanksReminderCooldown;
            _thanksMinJoinTime          = _userSettings.ThanksMinJoinTime;

            /*
             * Init Code analysis
             */
            _codeReminderCooldownTime = _userSettings.CodeReminderCooldown;
            _codeFormattingExample    = (
                @"\`\`\`cs" + Environment.NewLine +
                "Write your code on new line here." + Environment.NewLine +
                @"\`\`\`" + Environment.NewLine);
            _codeReminderFormattingExample = (
                _codeFormattingExample + Environment.NewLine +
                "Simple as that! If you'd like me to stop reminding you about this, simply type \"!disablecodetips\"");

            /*
             * Event subscriptions
             */
            _client.MessageReceived    += UpdateXp;
            _client.MessageReceived    += Thanks;
            _client.MessageUpdated     += ThanksEdited;
            _client.MessageReceived    += CodeCheck;
            _client.MessageReceived    += ScoldForAtEveryoneUsage;
            _client.UserJoined         += UserJoined;
            _client.GuildMemberUpdated += UserUpdated;
            _client.UserLeft           += UserLeft;

            LoadData();
            UpdateLoop();
        }
コード例 #21
0
 public TicketModule(Settings.Deserialized.Settings settings)
 {
     _settings = settings;
 }
コード例 #22
0
 public FeedService(DiscordSocketClient client, Settings.Deserialized.Settings settings)
 {
     _settings = settings;
     _client   = client;
 }
コード例 #23
0
        public UserService(DiscordSocketClient client, DatabaseService databaseService, ILoggingService loggingService, UpdateService updateService,
                           Settings.Deserialized.Settings settings, UserSettings userSettings)
        {
            _client              = client;
            _rand                = new Random();
            _databaseService     = databaseService;
            _loggingService      = loggingService;
            _updateService       = updateService;
            _settings            = settings;
            MutedUsers           = new Dictionary <ulong, DateTime>();
            _xpCooldown          = new Dictionary <ulong, DateTime>();
            _canEditThanks       = new HashSet <ulong>(32);
            _thanksCooldown      = new Dictionary <ulong, DateTime>();
            CodeReminderCooldown = new Dictionary <ulong, DateTime>();

            //TODO We should make this into a config file that we can confiure during runtime.
            _noXpChannels = new List <ulong>
            {
                _settings.BotCommandsChannel.Id
            };

            /*
             * Init XP
             */
            _xpMinPerMessage = userSettings.XpMinPerMessage;
            _xpMaxPerMessage = userSettings.XpMaxPerMessage;
            _xpMinCooldown   = userSettings.XpMinCooldown;
            _xpMaxCooldown   = userSettings.XpMaxCooldown;

            /*
             * Init thanks
             */
            var sbThanks = new StringBuilder();
            var thx      = userSettings.Thanks;

            sbThanks.Append("(?i)\\b(");
            foreach (var t in thx)
            {
                sbThanks.Append(t).Append("|");
            }

            sbThanks.Length--; //Efficiently remove the final pipe that gets added in final loop, simplifying loop
            sbThanks.Append(")\\b");
            _thanksRegex        = sbThanks.ToString();
            _thanksCooldownTime = userSettings.ThanksCooldown;
            _thanksMinJoinTime  = userSettings.ThanksMinJoinTime;

            /*
             * Init Code analysis
             */
            _codeReminderCooldownTime = userSettings.CodeReminderCooldown;
            CodeFormattingExample     = @"\`\`\`cs" + Environment.NewLine +
                                        "Write your code on new line here." + Environment.NewLine +
                                        @"\`\`\`" + Environment.NewLine;
            CodeReminderFormattingExample = CodeFormattingExample + Environment.NewLine +
                                            "Simple as that! If you'd like me to stop reminding you about this, simply type \"!disablecodetips\"";

            /* Make sure folders we require exist */
            if (!Directory.Exists($"{_settings.ServerRootPath}/images/profiles/"))
            {
                Directory.CreateDirectory($"{_settings.ServerRootPath}/images/profiles/");
            }

            /*
             * Event subscriptions
             */
            _client.MessageReceived    += UpdateXp;
            _client.MessageReceived    += Thanks;
            _client.MessageUpdated     += ThanksEdited;
            _client.MessageReceived    += CodeCheck;
            _client.MessageReceived    += ScoldForAtEveryoneUsage;
            _client.UserJoined         += UserJoined;
            _client.GuildMemberUpdated += UserUpdated;
            _client.UserLeft           += UserLeft;

            LoadData();
            UpdateLoop();
        }