mirror of
https://github.com/danbulant/Shasha
synced 2026-06-09 09:30:47 +00:00
Update lookup command
This commit is contained in:
parent
124d9dd0dd
commit
03afecade9
3 changed files with 176 additions and 10 deletions
|
|
@ -68,7 +68,7 @@ module.exports = class avatar extends commando.Command {
|
||||||
if (uID.length > 1) {
|
if (uID.length > 1) {
|
||||||
let ree = [];
|
let ree = [];
|
||||||
async function nonDigit(client) {
|
async function nonDigit(client) {
|
||||||
const theree = await findMemberRegEx(msg, uID);
|
const theree = findMemberRegEx(msg, uID);
|
||||||
if (theree) {
|
if (theree) {
|
||||||
for (const reeRes of theree) {
|
for (const reeRes of theree) {
|
||||||
ree.push(reeRes);
|
ree.push(reeRes);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const commando = require("@iceprod/discord.js-commando");
|
const commando = require("@iceprod/discord.js-commando");
|
||||||
const { cleanMentionID, findMemberRegEx, multipleMembersFound, trySend } = require("../../resources/functions");
|
const { cleanMentionID, findMemberRegEx, multipleMembersFound, trySend, findRoleRegEx, multipleRolesFound, multipleChannelsFound, findChannelRegEx } = require("../../resources/functions");
|
||||||
|
|
||||||
module.exports = class lookup extends commando.Command {
|
module.exports = class lookup extends commando.Command {
|
||||||
constructor(client) {
|
constructor(client) {
|
||||||
|
|
@ -12,6 +12,12 @@ module.exports = class lookup extends commando.Command {
|
||||||
description: "Lookup something in the server using mention, ID, or RegExp."
|
description: "Lookup something in the server using mention, ID, or RegExp."
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {commando.CommandoMessage} msg
|
||||||
|
* @param {*} arg
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
async run(msg, arg) {
|
async run(msg, arg) {
|
||||||
let show;
|
let show;
|
||||||
const showArg = arg.match(/\-\-show *\d*/i);
|
const showArg = arg.match(/\-\-show *\d*/i);
|
||||||
|
|
@ -26,15 +32,16 @@ module.exports = class lookup extends commando.Command {
|
||||||
}
|
}
|
||||||
arg = arg.replace(/\-\-show *\d*/i, "");
|
arg = arg.replace(/\-\-show *\d*/i, "");
|
||||||
const args = arg.split(/ +/);
|
const args = arg.split(/ +/);
|
||||||
let [fetchedMember, memMes] = [[], ""];
|
let [fetchedMember, fetchedRoles, fetchedChannels, memMes] = [[], [], [], ""];
|
||||||
if (args[0].toLowerCase() === "member") {
|
const lowCaseArg0 = args[0].toLowerCase();
|
||||||
|
if (lowCaseArg0 === "member") {
|
||||||
if (args[1]) {
|
if (args[1]) {
|
||||||
const memberID = cleanMentionID(arg.slice("member".length).trim());
|
const memberID = cleanMentionID(arg.slice("member".length).trim());
|
||||||
if (!/\D/.test(memberID)) {
|
if (!/\D/.test(memberID)) {
|
||||||
fetchedMember.push(msg.guild.member(memberID));
|
fetchedMember.push(msg.guild.member(memberID));
|
||||||
}
|
}
|
||||||
if (/\D/.test(memberID) || fetchedMember[0] === null) {
|
if (/\D/.test(memberID) || fetchedMember[0] === null) {
|
||||||
fetchedMember = await findMemberRegEx(msg, memberID);
|
fetchedMember = findMemberRegEx(msg, memberID);
|
||||||
}
|
}
|
||||||
if (fetchedMember.length > 1) {
|
if (fetchedMember.length > 1) {
|
||||||
memMes = multipleMembersFound(this.client, msg, fetchedMember, memberID, show, true);
|
memMes = multipleMembersFound(this.client, msg, fetchedMember, memberID, show, true);
|
||||||
|
|
@ -46,6 +53,44 @@ module.exports = class lookup extends commando.Command {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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})\`\`\``;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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})\`\`\``;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (memMes.length > 0) {
|
if (memMes.length > 0) {
|
||||||
return trySend(this.client, msg, memMes);
|
return trySend(this.client, msg, memMes);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const fs = require('fs-extra');
|
const fs = require('fs-extra');
|
||||||
const { MessageEmbed, Message, GuildMember, User, Channel, Client } = require('discord.js');
|
const { MessageEmbed, Message, GuildMember, User, Channel, Client, GuildChannel, Role, GuildMemberRoleManager } = require('discord.js');
|
||||||
const { defaultErrorLogChannel } = require("../config.json");
|
const { defaultErrorLogChannel } = require("../config.json");
|
||||||
const { database } = require("../database/mongo");
|
const { database } = require("../database/mongo");
|
||||||
|
|
||||||
|
|
@ -208,9 +208,9 @@ function multipleMembersFound(client, msg, arr, key, max = 5, withID) {
|
||||||
* Get member object with RegExp
|
* Get member object with RegExp
|
||||||
* @param {Message} msg
|
* @param {Message} msg
|
||||||
* @param {String} name
|
* @param {String} name
|
||||||
* @returns {Promise<GuildMember[]>} Member object found
|
* @returns {GuildMember[]} Member object found
|
||||||
*/
|
*/
|
||||||
async function findMemberRegEx(msg, name) {
|
function findMemberRegEx(msg, name) {
|
||||||
let found = [];
|
let found = [];
|
||||||
const re = new RegExp(name, "i");
|
const re = new RegExp(name, "i");
|
||||||
const list = msg.guild?.members.cache.array();
|
const list = msg.guild?.members.cache.array();
|
||||||
|
|
@ -346,10 +346,131 @@ function cleanMentionID(key) {
|
||||||
return uID;
|
return uID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get channel object wit RegExp
|
||||||
|
* @param {Message} msg
|
||||||
|
* @param {String} name
|
||||||
|
* @returns {GuildChannel[]} Channels object found
|
||||||
|
*/
|
||||||
|
function findChannelRegEx(msg, name) {
|
||||||
|
let found = [];
|
||||||
|
const re = new RegExp(name, "i");
|
||||||
|
const list = msg.guild?.channels.cache.array();
|
||||||
|
if (list) {
|
||||||
|
for(const mem of list) {
|
||||||
|
if (re.test(mem.name)) {
|
||||||
|
found.push(mem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return found;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get role object with RegExp
|
||||||
|
* @param {Message} msg
|
||||||
|
* @param {String} name
|
||||||
|
* @returns {Role[]} Roles object found
|
||||||
|
*/
|
||||||
|
function findRoleRegEx(msg, name) {
|
||||||
|
let found = [];
|
||||||
|
const re = new RegExp(name, "i");
|
||||||
|
const list = msg.guild?.roles.cache.array();
|
||||||
|
if (list) {
|
||||||
|
for(const mem of list) {
|
||||||
|
if (re.test(mem.name)) {
|
||||||
|
found.push(mem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return found;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notify when more than one channel found when looking in the channel list
|
||||||
|
* @param {Client} client - (this.client)
|
||||||
|
* @param {Message} msg - Message object
|
||||||
|
* @param {GuildChannel[]} arr - Test array
|
||||||
|
* @param {String} key - Keyword
|
||||||
|
* @param {Number} max - Max length
|
||||||
|
* @param {Boolean} withID - Include channel_ID
|
||||||
|
* @returns {String}
|
||||||
|
*/
|
||||||
|
function multipleChannelsFound(client, msg, arr, key, max = 5, withID) {
|
||||||
|
if (arr.length > 1) {
|
||||||
|
try {
|
||||||
|
let multipleFound = [];
|
||||||
|
for(const one of arr) {
|
||||||
|
let mes = one.name;
|
||||||
|
if (withID) {
|
||||||
|
mes = mes + ` (${one.id})`;
|
||||||
|
}
|
||||||
|
multipleFound.push(mes);
|
||||||
|
}
|
||||||
|
let multi = [];
|
||||||
|
for(const mu of multipleFound) {
|
||||||
|
if (multipleFound.indexOf(mu) < max) {
|
||||||
|
multi.push(mu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mes = multi.join(", ");
|
||||||
|
if (multipleFound.length > max) {
|
||||||
|
mes = mes+` and ${multipleFound.length - max} more...`;
|
||||||
|
}
|
||||||
|
return `Multiple channels found for: **${key}**\`\`\`md\n# ${mes}\`\`\``;
|
||||||
|
} catch (e) {
|
||||||
|
errLog(e, msg, client);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notify when more than one role found when looking in the role list
|
||||||
|
* @param {Client} client - (this.client)
|
||||||
|
* @param {Message} msg - Message object
|
||||||
|
* @param {Role[]} arr - Test array
|
||||||
|
* @param {String} key - Keyword
|
||||||
|
* @param {Number} max - Max length
|
||||||
|
* @param {Boolean} withID - Include role_ID
|
||||||
|
* @returns {String}
|
||||||
|
*/
|
||||||
|
function multipleRolesFound(client, msg, arr, key, max = 5, withID) {
|
||||||
|
if (arr.length > 1) {
|
||||||
|
try {
|
||||||
|
let multipleFound = [];
|
||||||
|
for(const one of arr) {
|
||||||
|
let mes = one.name;
|
||||||
|
if (withID) {
|
||||||
|
mes = mes + ` (${one.id})`;
|
||||||
|
}
|
||||||
|
multipleFound.push(mes);
|
||||||
|
}
|
||||||
|
let multi = [];
|
||||||
|
for(const mu of multipleFound) {
|
||||||
|
if (multipleFound.indexOf(mu) < max) {
|
||||||
|
multi.push(mu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mes = multi.join(", ");
|
||||||
|
if (multipleFound.length > max) {
|
||||||
|
mes = mes+` and ${multipleFound.length - max} more...`;
|
||||||
|
}
|
||||||
|
return `Multiple roles found for: **${key}**\`\`\`md\n# ${mes}\`\`\``;
|
||||||
|
} catch (e) {
|
||||||
|
errLog(e, msg, client);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
cleanMentionID,
|
cleanMentionID,
|
||||||
multipleMembersFound,
|
multipleMembersFound, multipleRolesFound, multipleChannelsFound,
|
||||||
findMemberRegEx, getUser,
|
findMemberRegEx, findChannelRegEx, findRoleRegEx,
|
||||||
|
getUser,
|
||||||
getChannelMessage, errLog,
|
getChannelMessage, errLog,
|
||||||
execCB, ranLog, noPerm,
|
execCB, ranLog, noPerm,
|
||||||
trySend, tryDelete, tryReact,
|
trySend, tryDelete, tryReact,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue