예제 #1
0
        public static async Task ProcessExperienceAsync(ICommandContext context, Guild sguild)
        {
            if (sguild is null)
            {
                return;
            }

            using var Database = new SkuldDbContextFactory().CreateDbContext();

            if (!Database.Features.Any(x => x.Id == sguild.Id))
            {
                Database.Features.Add(new GuildFeatures
                {
                    Id = sguild.Id
                });
                await Database.SaveChangesAsync().ConfigureAwait(false);
            }

            GuildFeatures features = Database.Features.Find(sguild.Id);

            if (features.Experience)
            {
                await ExperienceService.HandleExperienceAsync(context);
            }
        }
예제 #2
0
        public static async Task HandleSideTasksAsync(ICommandContext context)
        {
            using var Database = new SkuldDbContextFactory().CreateDbContext();

            Guild sguild = null;

            if (context.Guild != null)
            {
                sguild = await
                         Database.InsertOrGetGuildAsync(context.Guild)
                         .ConfigureAwait(false);
            }

            if (sguild != null)
            {
                if (!Database.Features.Any(x => x.Id == sguild.Id))
                {
                    Database.Features.Add(new GuildFeatures
                    {
                        Id = sguild.Id
                    });
                    await Database.SaveChangesAsync().ConfigureAwait(false);
                }

                GuildFeatures features = Database.Features.Find(sguild.Id);
                if (features.Experience)
                {
                    _ = Task.Run(() => ExperienceService.HandleExperienceAsync(context));
                }

                if (!Database.Modules.Any(x => x.Id == sguild.Id))
                {
                    Database.Modules.Add(new GuildModules
                    {
                        Id = sguild.Id
                    });
                    await Database.SaveChangesAsync().ConfigureAwait(false);
                }

                GuildModules modules;
                if (!Database.Modules.Any(x => x.Id == sguild.Id))
                {
                    Database.Modules.Add(new GuildModules
                    {
                        Id = sguild.Id
                    });
                    await Database.SaveChangesAsync().ConfigureAwait(false);
                }

                modules = Database.Modules.Find(sguild.Id);

                if (modules.Custom)
                {
                    _ = Task.Run(() => CustomCommandService.HandleCustomCommandAsync(context, SkuldApp.Configuration));
                }
            }
        }
예제 #3
0
        /// <summary>
        ///    Gets a guilds feature set.
        /// </summary>
        /// <param name="guild"> The guild to check. </param>
        /// <returns> Returns a <see cref="GuildFeatures"/> that has a bool indicating if any features are available for the guild. </returns>
        public static GuildFeatures GetGuildFeatures(this IGuild guild)
        {
            GuildFeatures features = new GuildFeatures();

            if (guild.Features.Count == 0)
            {
                return(features);
            }
            foreach (string s in guild.Features)
            {
                switch (s)
                {
                case "INVITE_SPLASH":
                    features.InviteSplash = true;
                    break;

                case "VIP_REGIONS":
                    features.VipRegions = true;
                    break;

                case "VANITY_URL":
                    features.VanityUrl = true;
                    break;

                case "VERIFIED":
                    features.Verified = true;
                    break;

                case "PARTNERED":
                    features.Partnered = true;
                    break;

                case "COMMERCE":
                    features.Commerce = true;
                    break;

                case "NEWS":
                    features.News = true;
                    break;

                case "DISCOVERABLE":
                    features.Discoverable = true;
                    break;

                case "FEATURABLE":
                    features.Featurable = true;
                    break;

                case "ANIMATED_ICON":
                    features.AnimatedIcon = true;
                    break;

                case "BANNER":
                    features.Banner = true;
                    break;

                case "WELCOME_SCREEN_ENABLED":
                    features.WelcomeScreen = true;
                    break;

                case "COMMUNITY":
                    features.Community = true;
                    break;

                case "ENABLED_DISCOVERABLE_BEFORE":
                    features.DiscoverableOld = true;
                    break;
                }
            }
            return(features);
        }