Shasha/cmds/utility/lookup.js
2021-05-10 12:45:36 +00:00

95 lines
No EOL
4.3 KiB
JavaScript

'use strict';
const commando = require("@iceprod/discord.js-commando");
const { cleanMentionID, findMemberRegEx, multipleMembersFound, trySend, findRoleRegEx, multipleRolesFound, multipleChannelsFound, findChannelRegEx } = require("../../resources/functions");
module.exports = class lookup extends commando.Command {
constructor(client) {
super(client, {
name: "lookup",
memberName: "lookup",
group: "utility",
description: "Lookup something in the server using mention, ID, or RegExp."
});
}
/**
*
* @param {commando.CommandoMessage} msg
* @param {*} arg
* @returns
*/
async run(msg, arg) {
let show;
const showArg = arg.match(/\-\-show *\d*/i);
if (showArg?.[0]) {
const digit = showArg[0].match(/\d*/g);
for (const val of digit) {
if (val.length > 0) {
const res = parseInt(val, 10);
show = res;
}
}
}
arg = arg.replace(/\-\-show *\d*/i, "");
const args = arg.split(/ +/);
let [fetchedMember, fetchedRoles, fetchedChannels, memMes] = [[], [], [], ""];
const lowCaseArg0 = args[0].toLowerCase();
if (lowCaseArg0 === "role") {
if (args[1]) {
const cleanRoleID = cleanMentionID(arg.slice("role".length).trim());
if (!/\D/.test(cleanRoleID)) {
fetchedRoles.push(msg.guild.roles.cache.get(cleanRoleID));
}
if (/\D/.test(cleanRoleID) || fetchedRoles[0] == null) {
fetchedRoles = findRoleRegEx(msg, cleanRoleID);
}
if (fetchedRoles.length > 1) {
memMes = multipleRolesFound(this.client, msg, fetchedRoles, cleanRoleID, show, true);
} else {
if (fetchedRoles.length === 0 || fetchedRoles[0] === null) {
return trySend(this.client, msg, `No role found for: **${cleanRoleID}**`);
}
memMes = `Role found for: **${cleanRoleID}**\`\`\`md\n# ${fetchedRoles[0].name} (${fetchedRoles[0].id})\`\`\``;
}
}
} else {
if (lowCaseArg0 === "channel") {
if (args[1]) {
const cleanChannelID = cleanMentionID(arg.slice("channel".length).trim());
if (!/\D/.test(cleanChannelID)) {
fetchedChannels.push(msg.guild.roles.cache.get(cleanChannelID));
}
if (/\D/.test(cleanChannelID) || fetchedChannels[0] == null) {
fetchedChannels = findChannelRegEx(msg, cleanChannelID);
}
if (fetchedChannels.length > 1) {
memMes = multipleChannelsFound(this.client, 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}**\`\`\`md\n# ${fetchedChannels[0].name} (${fetchedChannels[0].id})\`\`\``;
}
}
} else {
if (!/\D/.test(arg)) {
fetchedMember.push(msg.guild.member(arg));
}
if (/\D/.test(arg) || fetchedMember[0] === null) {
fetchedMember = findMemberRegEx(msg, arg);
}
if (fetchedMember.length > 1) {
memMes = multipleMembersFound(this.client, 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}**\`\`\`md\n# ${fetchedMember[0].user.tag} (${fetchedMember[0].user.id})\`\`\``;
}
}
}
if (memMes.length > 0) {
return trySend(this.client, msg, memMes);
}
}
};