forked from Galactic/galactic-bot
resolvers
This commit is contained in:
parent
8116a5a004
commit
99d416f3d7
@ -57,6 +57,14 @@ class Resolver {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve several user resolveables
|
||||
*
|
||||
* @param {array<string>} [resolveables=[]] an array of user resolveables (name, id, tag)
|
||||
* @param {boolean} [strict=false] whether or not to attempt resolving by partial usernames
|
||||
* @returns {array || boolean} Array of resolved users or false if none were resolved
|
||||
* @memberof Resolver
|
||||
*/
|
||||
async resolveUsers(resolveables = [], strict = false) {
|
||||
|
||||
if(typeof resolveables === 'string') resolveables = [ resolveables ];
|
||||
@ -100,11 +108,20 @@ class Resolver {
|
||||
|
||||
}
|
||||
|
||||
return resolved;
|
||||
return resolved.length > 0 ? resolved : false;
|
||||
|
||||
}
|
||||
|
||||
async resolveMember(resolveables = [], strict = false, guild) {
|
||||
/**
|
||||
* Resolve multiple member resolveables
|
||||
*
|
||||
* @param {array<string>} [resolveables=[]] an array of member resolveables (name, nickname, tag, id)
|
||||
* @param {boolean} [strict=false] whether or not to attempt resolving by partial matches
|
||||
* @param {Guild} guild the guild in which to look for members
|
||||
* @returns {array<GuildMember> || boolean} an array of resolved members or false if none were resolved
|
||||
* @memberof Resolver
|
||||
*/
|
||||
async resolveMembers(resolveables = [], guild, strict = false) {
|
||||
|
||||
if(typeof resolveables === 'string') resolveables = [ resolveables ];
|
||||
if(resolveables.length === 0) return false;
|
||||
@ -151,7 +168,100 @@ class Resolver {
|
||||
|
||||
}
|
||||
|
||||
return resolved;
|
||||
return resolved.length > 0 ? resolved : false;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param {array<string>} [resolveables=[]] an array of channel resolveables (name, id)
|
||||
* @param {guild} guild the guild in which to look for channels
|
||||
* @param {boolean} [strict=false] whether or not partial names are resolved
|
||||
* @returns {array<GuildChannel>} an array of guild channels
|
||||
* @memberof Resolver
|
||||
*/
|
||||
async resolveChannels(resolveables = [], guild, strict = false) {
|
||||
|
||||
if(typeof resolveables === 'string') resolveables = [ resolveables ];
|
||||
if(resolveables.length === 0) return false;
|
||||
let channels = guild.channels;
|
||||
let resolved = [];
|
||||
|
||||
for(let resolveable of resolveables) {
|
||||
|
||||
let channel = channels.resolve(resolveable);
|
||||
if(channel) {
|
||||
resolved.push(channel);
|
||||
continue;
|
||||
}
|
||||
|
||||
let name = /^\#?([a-z0-9\-\_0]*)/i;
|
||||
let id = /^\<\#([0-9]*)\>/i;
|
||||
|
||||
if(name.test(resolveable)) {
|
||||
|
||||
let match = resolveable.match(name);
|
||||
let ch = match[1].toLowerCase();
|
||||
|
||||
let channel = channels.cache.filter(c => {
|
||||
if(!strict) return c.name.toLowerCase().includes(ch)
|
||||
return c.name.toLowerCase() === ch;
|
||||
}).first(1);
|
||||
|
||||
if(channel) resolved.push(channel);
|
||||
|
||||
} else if(id.test(resolveable)) {
|
||||
|
||||
let match = resolveable.match(id);
|
||||
let ch = match[1];
|
||||
|
||||
let channel = channels.resolve(ch);
|
||||
|
||||
if(channel) resolved.push(channel);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return resolved.length > 0 ? resolved : false;
|
||||
|
||||
}
|
||||
|
||||
async resolveRoles(resolveables = [], guild, strict) {
|
||||
|
||||
if(typeof resolveables === 'string') resolveables = [ resolveables ];
|
||||
if(resolveables.length === 0) return false;
|
||||
let roles = guild.roles;
|
||||
let resolved = [];
|
||||
|
||||
for(let resolveable of resolveables) {
|
||||
|
||||
let id = /^(<@&)?([0-9]{16,22})>?/i;
|
||||
|
||||
if(id.test(resolveable)) {
|
||||
|
||||
let match = resolveable.match(id);
|
||||
let r_id = match[2];
|
||||
|
||||
let role = await roles.fetch(r_id).catch(console.error);
|
||||
|
||||
if(role) resolved.push(role);
|
||||
|
||||
} else {
|
||||
|
||||
let role = roles.cache.filter(r => {
|
||||
if(!strict) return r.name.toLowerCase().includes(resolveable.toLowerCase());
|
||||
return r.name.toLowerCase() === resolveable.toLowerCase();
|
||||
}).first(1);
|
||||
|
||||
if(role) resolved.push(role);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return resolved.length > 0 ? reoslved : false;
|
||||
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,23 @@ const Guild = Structures.extend('Guild', (Guild) => {
|
||||
|
||||
}
|
||||
|
||||
async resolveMembers(members, strict = false) {
|
||||
|
||||
return await this.client.resolver.resolveMembers(members, this, strict);
|
||||
}
|
||||
|
||||
async resolveChannels(channels, strict = false) {
|
||||
|
||||
return await this.client.resolver.resolveChannels(channels, this, strict);
|
||||
|
||||
}
|
||||
|
||||
async resolveRoles(roles, strict = false) {
|
||||
|
||||
return await this.client.resolver.resolveRoles(roles, this, strict);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return ExtendedGuild;
|
||||
|
Loading…
Reference in New Issue
Block a user