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;