Attempt a few extra ways to resolve users
This commit is contained in:
@@ -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.');
|
||||
|
||||
|
||||
@@ -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.');
|
||||
|
||||
|
||||
@@ -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<User | null | undefined> {
|
||||
export async function resolveUser(client: Client, value: string, guild: Guild | null = null): Promise<User | null | undefined> {
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user