From 68f43d0cc7ecd9d51467aae0d33df67519b14307 Mon Sep 17 00:00:00 2001 From: karashiiro <49822414+karashiiro@users.noreply.github.com> Date: Sat, 5 Jul 2025 10:48:35 -0700 Subject: [PATCH] misc stuff - Update ~specialboys - Make /list-vanity-roles not have duplicates - Add some helper methods for prioritized roles --- .../FFXIV/DelubrumReginae/DRInfoCommands.cs | 2 +- src/Prima/Game/FFXIV/DiscordXIVUser.cs | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) 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(