mirror of
https://github.com/danbulant/Shasha
synced 2026-05-25 04:41:51 +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) {
|
||||
let ree = [];
|
||||
async function nonDigit(client) {
|
||||
const theree = await findMemberRegEx(msg, uID);
|
||||
const theree = findMemberRegEx(msg, uID);
|
||||
if (theree) {
|
||||
for (const reeRes of theree) {
|
||||
ree.push(reeRes);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
'use strict';
|
||||
|
||||
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 {
|
||||
constructor(client) {
|
||||
|
|
@ -12,6 +12,12 @@ module.exports = class lookup extends commando.Command {
|
|||
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);
|
||||
|
|
@ -26,15 +32,16 @@ module.exports = class lookup extends commando.Command {
|
|||
}
|
||||
arg = arg.replace(/\-\-show *\d*/i, "");
|
||||
const args = arg.split(/ +/);
|
||||
let [fetchedMember, memMes] = [[], ""];
|
||||
if (args[0].toLowerCase() === "member") {
|
||||
let [fetchedMember, fetchedRoles, fetchedChannels, memMes] = [[], [], [], ""];
|
||||
const lowCaseArg0 = args[0].toLowerCase();
|
||||
if (lowCaseArg0 === "member") {
|
||||
if (args[1]) {
|
||||
const memberID = cleanMentionID(arg.slice("member".length).trim());
|
||||
if (!/\D/.test(memberID)) {
|
||||
fetchedMember.push(msg.guild.member(memberID));
|
||||
}
|
||||
if (/\D/.test(memberID) || fetchedMember[0] === null) {
|
||||
fetchedMember = await findMemberRegEx(msg, memberID);
|
||||
fetchedMember = findMemberRegEx(msg, memberID);
|
||||
}
|
||||
if (fetchedMember.length > 1) {
|
||||
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) {
|
||||
return trySend(this.client, msg, memMes);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
'use strict';
|
||||
|
||||
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 { database } = require("../database/mongo");
|
||||
|
||||
|
|
@ -208,9 +208,9 @@ function multipleMembersFound(client, msg, arr, key, max = 5, withID) {
|
|||
* Get member object with RegExp
|
||||
* @param {Message} msg
|
||||
* @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 = [];
|
||||
const re = new RegExp(name, "i");
|
||||
const list = msg.guild?.members.cache.array();
|
||||
|
|
@ -346,10 +346,131 @@ function cleanMentionID(key) {
|
|||
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 = {
|
||||
cleanMentionID,
|
||||
multipleMembersFound,
|
||||
findMemberRegEx, getUser,
|
||||
multipleMembersFound, multipleRolesFound, multipleChannelsFound,
|
||||
findMemberRegEx, findChannelRegEx, findRoleRegEx,
|
||||
getUser,
|
||||
getChannelMessage, errLog,
|
||||
execCB, ranLog, noPerm,
|
||||
trySend, tryDelete, tryReact,
|
||||
|
|
|
|||
Loading…
Reference in a new issue