Exemple #1
0
        async Task <bool> IPermissionConfig.WhitelistModuleGuild(IGuild guild, ModuleInfo module)
        {
            var gui = QueryGuild(guild);

            if (gui != null)
            {
                var n = QueryModule(module);
                if (n == null)
                {
                    n = new ConfigModule {
                        ModuleName = module.Name
                    };
                    Modules.Add(n);
                    await SaveChangesAsync().ConfigureAwait(false);
                }

                var hasThis = QueryGuildModules().Any(m => m.Module.Id == n.Id && m.Guild.Id == gui.Id);
                if (!hasThis)
                {
                    var gm = new GuildModule <TGuild, TChannel, TUser>
                    {
                        Guild  = gui,
                        Module = n
                    };
                    GuildModules.Add(gm);
                    //gui.WhiteListedModules.Add(gm);
                    await SaveChangesAsync().ConfigureAwait(false);
                }

                return(!hasThis);
            }

            return(false);
        }
Exemple #2
0
        public SamplePacket()
        {
            SampleService myService = new SampleService(); // <- модулям будет передаваться именно этот объект, не измененный

            Services.AddSingleton(myService);              // если myService нужно как-то конфигурировать, то делай это в этом классе,
            GuildModules.Add(typeof(SampleModule));        // или монжно еще выше по архитектурке, т.е. сюда в конструкторе передавать чото :^)
            DMModules.Add(typeof(SampleModule));

            Initialized += SubscribeOnDiscordEvents;        // во время создания this обьекта Discord еще не существует,
                                                            // он создается когда DiscordBot проделает все манипуляции и передаст его методом PacketBase.InitPacket
                                                            // я еще не понял как можно по другому *thinkong*
                                                            // так же и передается ConfigsProvider, пока Discord не будет рэди, комманд конфиги серверов, будут пустыми (точнее Counts = 0)
        }
Exemple #3
0
        public SettingsPacket()
        {
            var service = new SettingsService();

            Services.AddSingleton(service);
            DMModules.Add(typeof(SettingsModule));
            GuildModules.Add(typeof(SettingsModule));
            Initialized += () =>
            {
                service.CommandConfigsProvider  = CommandConfigsProvider;
                service.CommandServicesProvider = CommandServicesProvider;
            };
        }
Exemple #4
0
        async Task <bool> IPermissionConfig.BlacklistModuleGuild(IGuild guild, ModuleInfo module)
        {
            var mod = await QueryGuildModules()
                      .Where(m => m.Guild.GuildId == guild.Id)
                      .SingleOrDefaultAsync(m => m.Module.ModuleName == module.Name).ConfigureAwait(false);

            if (mod != null)
            {
                GuildModules.Remove(mod);
                await SaveChangesAsync().ConfigureAwait(false);;
                return(true);
            }
            return(false);
        }
Exemple #5
0
 private IQueryable <GuildModule <TGuild, TChannel, TUser> > QueryGuildModules()
 => GuildModules.Include(gm => gm.Guild).Include(gm => gm.Module);