From 6adc43182343ce1f759b54675c255c39de27f838 Mon Sep 17 00:00:00 2001 From: Tarrgon <61888458+Tarrgon@users.noreply.github.com> Date: Mon, 8 Sep 2025 06:58:16 -0400 Subject: [PATCH] Attempt a few extra ways to resolve users --- src/commands/link.ts | 2 +- src/commands/notes.ts | 2 +- src/utils/discord-user-utils.ts | 20 +++++++++++++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/commands/link.ts b/src/commands/link.ts index 8ef9611..86edf52 100644 --- a/src/commands/link.ts +++ b/src/commands/link.ts @@ -59,7 +59,7 @@ export default { const idToUse = matches ? matches.groups!.id : discordUserInput; - const user = await resolveUser(client, idToUse); + const user = await resolveUser(client, idToUse, interaction.guild); if (!user) return interaction.editReply('User not found.'); diff --git a/src/commands/notes.ts b/src/commands/notes.ts index 1c8d27f..083f5ce 100644 --- a/src/commands/notes.ts +++ b/src/commands/notes.ts @@ -95,7 +95,7 @@ export default { await deferInteraction(interaction); - const user = await resolveUser(client, idToUse); + const user = await resolveUser(client, idToUse, interaction.guild); if (!user) return interaction.editReply('User not found.'); diff --git a/src/utils/discord-user-utils.ts b/src/utils/discord-user-utils.ts index 6aab086..b4219fe 100644 --- a/src/utils/discord-user-utils.ts +++ b/src/utils/discord-user-utils.ts @@ -1,12 +1,26 @@ -import { Client, User } from 'discord.js'; +import { Client, Guild, User } from 'discord.js'; -export async function resolveUser(client: Client, value: string): Promise { +export async function resolveUser(client: Client, value: string, guild: Guild | null = null): Promise { let user: User | null | undefined = null; try { user = await client.users.fetch(value); - } catch (e) { + } catch { user = client.users.cache.find(u => u.username == value); + + if (!user && guild) { + user = guild.members.cache.find(m => m.displayName == value)?.user; + + if (!user) { + try { + const users = await guild.members.fetch({ + query: value + }); + + if (users.size > 0) user = users.first()!.user; + } catch { } + } + } } return user;