feat: hr flag for lookup cmd

This commit is contained in:
Neko-Life 2021-07-29 16:44:55 +07:00
parent ee864bfefa
commit 671712659e
2 changed files with 55 additions and 38 deletions

View file

@ -15,7 +15,7 @@ module.exports = class lookup extends commando.Command {
}
async run(msg, arg) {
if (!arg) {
return trySend(this.client, msg, "Args: `--[m|c|r]` [Member|Channel|Role]: `[mention|ID|name]` `--s` Show: `[number]`")
return trySend(this.client, msg, "Args: `--[m|c|r|hr]` [Member|Channel|Role|HasRole]: `[mention|ID|name]` `--s` Show: `[number]`")
}
let show;
const showArg = arg.match(/(?<!\\)--s +\d+/);
@ -30,9 +30,26 @@ module.exports = class lookup extends commando.Command {
}
arg = arg.replace(/(?<!\\)--s +\d+/, "").trim();
const args = arg.split(/ +/);
console.log(args);
let [fetchedMember, fetchedRoles, fetchedChannels, memMes] = [[], [], [], ""];
const lowCaseArg0 = args[0];
if (lowCaseArg0.startsWith("--r")) {
if (lowCaseArg0.startsWith("--hr")) {
console.log("HR");
if (args[1]) {
console.log("ARGS[1]");
const cleanRoleID = cleanMentionID(arg.slice("--hr ".length).trim());
if (/^\d{17,19}$/.test(cleanRoleID)) {
fetchedRoles.push(msg.guild.roles.cache.get(cleanRoleID));
} else {
fetchedRoles = findRoleRegEx(msg, cleanRoleID);
}
if (!fetchedRoles[0]) return trySend(this.client, msg, `No role found for: **${cleanRoleID}**`);
const HR = fetchedRoles[0].members.map(r => r);
if (!HR.length) return trySend(this.client, msg, `No member with role \`${fetchedRoles[0].name}\` found`)
if (HR.length === 1) memMes = `Member with role: **${fetchedRoles[0].name}**\`\`\`js\n' ${HR[0].displayName} (${HR[0].tag})\`\`\``;
else memMes = multipleMembersFound(msg, HR, fetchedRoles[0].name, show, false, true).replace("Multiple members found for", "Multiple members found with role");
}
} else if (lowCaseArg0.startsWith("--r")) {
if (args[1]) {
const cleanRoleID = cleanMentionID(arg.slice("--r ".length).trim());
if (/^\d{17,19}$/.test(cleanRoleID)) {
@ -49,42 +66,40 @@ module.exports = class lookup extends commando.Command {
memMes = `Role found for: **${cleanRoleID}**\`\`\`js\n' ${fetchedRoles[0].name} (${fetchedRoles[0].id})\`\`\``;
}
}
} else if (lowCaseArg0.startsWith("--c")) {
if (args[1]) {
const cleanChannelID = cleanMentionID(arg.slice("--c ".length).trim());
if (/^\d{17,19}$/.test(cleanChannelID)) {
fetchedChannels.push(msg.guild.roles.cache.get(cleanChannelID));
} else {
fetchedChannels = findChannelRegEx(msg, cleanChannelID);
}
if (fetchedChannels.length > 1) {
memMes = multipleChannelsFound(msg, fetchedChannels, cleanChannelID, show, true);
} else {
if (fetchedChannels.length === 0 || fetchedChannels[0] === null) {
return trySend(this.client, msg, `No channel found for: **${cleanChannelID}**`);
}
memMes = `Channel found for: **${cleanChannelID}**\`\`\`js\n' ${fetchedChannels[0].name} (${fetchedChannels[0].id})\`\`\``;
}
}
} else {
if (lowCaseArg0.startsWith("--c")) {
if (args[1]) {
const cleanChannelID = cleanMentionID(arg.slice("--c ".length).trim());
if (/^\d{17,19}$/.test(cleanChannelID)) {
fetchedChannels.push(msg.guild.roles.cache.get(cleanChannelID));
} else {
fetchedChannels = findChannelRegEx(msg, cleanChannelID);
}
if (fetchedChannels.length > 1) {
memMes = multipleChannelsFound(msg, fetchedChannels, cleanChannelID, show, true);
} else {
if (fetchedChannels.length === 0 || fetchedChannels[0] === null) {
return trySend(this.client, msg, `No channel found for: **${cleanChannelID}**`);
}
memMes = `Channel found for: **${cleanChannelID}**\`\`\`js\n' ${fetchedChannels[0].name} (${fetchedChannels[0].id})\`\`\``;
}
}
if (arg.startsWith("--m")) {
arg = arg.slice("--m ".length).trim();
}
arg = cleanMentionID(arg);
if (/^\d{17,19}$/.test(arg)) {
fetchedMember.push(msg.guild.member(arg));
} else {
if (arg.startsWith("--m")) {
arg = arg.slice("--m ".length).trim();
}
arg = cleanMentionID(arg);
if (/^\d{17,19}$/.test(arg)) {
fetchedMember.push(msg.guild.member(arg));
} else {
fetchedMember = findMemberRegEx(msg, arg);
}
if (fetchedMember.length > 1) {
memMes = multipleMembersFound(msg, fetchedMember, arg, show, true);
} else {
if (fetchedMember.length === 0 || fetchedMember[0] === null) {
return trySend(this.client, msg, `No member found for: **${arg}**`);
}
memMes = `Member found for: **${arg}**\`\`\`js\n' ${fetchedMember[0].user.tag} (${fetchedMember[0].user.id})\`\`\``;
fetchedMember = findMemberRegEx(msg, arg);
}
if (fetchedMember.length > 1) {
memMes = multipleMembersFound(msg, fetchedMember, arg, show, true);
} else {
if (fetchedMember.length === 0 || fetchedMember[0] === null) {
return trySend(this.client, msg, `No member found for: **${arg}**`);
}
memMes = `Member found for: **${arg}**\`\`\`js\n' ${fetchedMember[0].user.tag} (${fetchedMember[0].user.id})\`\`\``;
}
}
if (memMes.length > 0) {

View file

@ -120,16 +120,18 @@ async function ranLog(msg, addition) {
* @param {string} key - Keyword
* @param {number} max - Max length
* @param {boolean} withID - Include user_ID
* @param {string} withNick
* @returns {string}
*/
function multipleMembersFound(msg, arr, key, max = 4, withID) {
function multipleMembersFound(msg, arr, key, max = 4, withID, withNick) {
if (msg && arr.length > 1) {
try {
let multipleFound = [];
for (const one of arr) {
const user = one.user ?? one;
const user = one.user || one;
let mes = user.tag;
if (withID) mes = mes + ` (${user.id})`;
if (withNick) mes += ` (${one.displayName})`
if (withID) mes += ` (${user.id})`;
multipleFound.push(mes);
}
let multi = [];