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); } }
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)); } } }
/// <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); }