diff --git a/src/Prima.Application/Commands/FFXIV/DelubrumReginae/DRInfoCommands.cs b/src/Prima.Application/Commands/FFXIV/DelubrumReginae/DRInfoCommands.cs index 556e9c7..7465567 100644 --- a/src/Prima.Application/Commands/FFXIV/DelubrumReginae/DRInfoCommands.cs +++ b/src/Prima.Application/Commands/FFXIV/DelubrumReginae/DRInfoCommands.cs @@ -99,7 +99,7 @@ public Task MinoTrapAsync() => [RateLimit(TimeSeconds = 10, Global = true)] [RestrictToGuilds(SpecialGuilds.CrystalExploratoryMissions)] public Task SpecialBoysAsync() => DiscordUtilities.PostImage(_http, Context, - "https://cdn.discordapp.com/attachments/908419620279574578/922266962363568188/Philippe_QG.png"); + "https://i.imgur.com/ERMS7cw.png"); [Command("drnspeedrun", RunMode = RunMode.Async)] [Description("Shows DRN speedrun loadouts.")] diff --git a/src/Prima/Game/FFXIV/DiscordXIVUser.cs b/src/Prima/Game/FFXIV/DiscordXIVUser.cs index d145fcb..379cbbc 100644 --- a/src/Prima/Game/FFXIV/DiscordXIVUser.cs +++ b/src/Prima/Game/FFXIV/DiscordXIVUser.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; +using System.Linq; using System.Threading.Tasks; using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; @@ -36,9 +37,23 @@ [BsonRequired] [BsonRepresentation(BsonType.String)] public bool Verified; + public Dictionary PrioritizedVanityRole = new(); + // Keyed on guild ID (keys must be represented as strings) public Dictionary> VanityRoles = new(); + public bool TryGetPrioritizedVanityRole(ulong guildId, out ulong? roleId) + { + roleId = PrioritizedVanityRole?.GetValueOrDefault(guildId.ToString()); + return roleId.HasValue; + } + + public void SetPrioritizedVanityRole(ulong guildId, ulong? roleId) + { + PrioritizedVanityRole ??= new Dictionary(); + PrioritizedVanityRole[guildId.ToString()] = roleId; + } + public IList GetVanityRoles(ulong guildId) { return VanityRoles?.GetValueOrDefault(guildId.ToString(), new List()) ?? new List(); @@ -51,8 +66,11 @@ public void AddVanityRoles(ulong guildId, IEnumerable roles) foreach (var role in roles) { - VanityRoles[guildId.ToString()].Add(role); + if (!VanityRoles[guildId.ToString()].Contains(role)) VanityRoles[guildId.ToString()].Add(role); } + + // Temporary hack since some users have duplicates already + VanityRoles[guildId.ToString()] = new HashSet(VanityRoles[guildId.ToString()]).ToList(); } public static async Task<(DiscordXIVUser?, LodestoneCharacter?)> CreateFromLodestoneId(