solara-testing-beta
Version:
A modern, customizable, and lightweight Discord framework.
119 lines • 3.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveUser = resolveUser;
exports.resolveMember = resolveMember;
exports.getTargetMember = getTargetMember;
exports.getTargetUser = getTargetUser;
async function resolveUser(client, guild, identifier) {
if (!identifier)
return null;
identifier = identifier.replace(/[<@!>]/g, '');
try {
if (/^\d{17,19}$/.test(identifier)) {
const user = await client.users.fetch(identifier).catch(() => null);
if (user)
return user;
}
}
catch { }
if (guild) {
try {
const members = await guild.members.search({ query: identifier, limit: 1 });
if (members.size > 0) {
return members.first().user;
}
}
catch { }
const memberByName = guild.members.cache.find(m => m.user.username.toLowerCase() === identifier.toLowerCase() ||
m.user.tag.toLowerCase() === identifier.toLowerCase() ||
m.displayName.toLowerCase() === identifier.toLowerCase());
if (memberByName)
return memberByName.user;
}
const userByName = client.users.cache.find(u => u.username.toLowerCase() === identifier.toLowerCase() ||
u.tag.toLowerCase() === identifier.toLowerCase());
if (userByName)
return userByName;
try {
if (/^\d{17,19}$/.test(identifier)) {
const user = await client.users.fetch(identifier).catch(() => null);
if (user)
return user;
}
}
catch { }
return null;
}
async function resolveMember(client, guild, identifier) {
if (!guild || !identifier)
return null;
identifier = identifier.replace(/[<@!>]/g, '');
try {
if (/^\d{17,19}$/.test(identifier)) {
const member = await guild.members.fetch(identifier).catch(() => null);
if (member)
return member;
}
}
catch { }
try {
const members = await guild.members.search({ query: identifier, limit: 1 });
if (members.size > 0) {
return members.first();
}
}
catch (e) {
console.warn(`Member search failed in guild ${guild.id}: ${e}`);
}
const memberByName = guild.members.cache.find(m => m.user.username.toLowerCase() === identifier.toLowerCase() ||
m.user.tag.toLowerCase() === identifier.toLowerCase() ||
m.displayName.toLowerCase() === identifier.toLowerCase() ||
m.id === identifier);
if (memberByName)
return memberByName;
try {
if (/^\d{17,19}$/.test(identifier)) {
const member = await guild.members.fetch(identifier).catch(() => null);
if (member)
return member;
}
}
catch { }
return null;
}
async function getTargetMember(ctx, argIndex) {
const guild = ctx.message?.guild ?? ctx.interaction?.guild;
if (!guild)
return null;
const targetIdentifier = ctx.args[argIndex];
if (targetIdentifier) {
return await resolveMember(ctx.client, guild, targetIdentifier);
}
else if (ctx.interaction) {
return ctx.interaction.member;
}
else if (ctx.message) {
return ctx.message.member;
}
return null;
}
async function getTargetUser(ctx, argIndex) {
const targetIdentifier = ctx.args[argIndex];
if (targetIdentifier) {
const guild = ctx.message?.guild ?? ctx.interaction?.guild;
if (guild) {
const member = await resolveMember(ctx.client, guild, targetIdentifier);
if (member)
return member.user;
}
return await resolveUser(ctx.client, guild ?? null, targetIdentifier);
}
else if (ctx.interaction) {
return ctx.interaction.user;
}
else if (ctx.message) {
return ctx.message.author;
}
return null;
}
//# sourceMappingURL=resolveUser.js.map