mirror of
https://github.com/danbulant/Shasha
synced 2026-06-24 17:12:01 +00:00
Added lookup member command
This commit is contained in:
parent
56211ad566
commit
d88bb5c75c
3 changed files with 87 additions and 27 deletions
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
const commando = require("@iceprod/discord.js-commando");
|
const commando = require("@iceprod/discord.js-commando");
|
||||||
const { MessageEmbed } = require("discord.js");
|
const { MessageEmbed } = require("discord.js");
|
||||||
const { ranLog, errLog, trySend, findMemberRegEx, multipleMembersFound } = require("../../resources/functions");
|
const { ranLog, errLog, trySend, findMemberRegEx, multipleMembersFound, cleanMentionID } = require("../../resources/functions");
|
||||||
const { database } = require("../../database/mongo");
|
const { database } = require("../../database/mongo");
|
||||||
const { randomColors } = require("../../config.json");
|
const { randomColors } = require("../../config.json");
|
||||||
|
|
||||||
|
|
@ -16,11 +16,6 @@ module.exports = class avatar extends commando.Command {
|
||||||
description: "Avatar showcase."
|
description: "Avatar showcase."
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {commando.CommandoMessage} msg
|
|
||||||
* @param {*} arg
|
|
||||||
*/
|
|
||||||
async run(msg, arg) {
|
async run(msg, arg) {
|
||||||
const doc = msg.guild?.id ?? msg.author.id;
|
const doc = msg.guild?.id ?? msg.author.id;
|
||||||
const config = database.collection(msg.guild ? "Guild" : "User");
|
const config = database.collection(msg.guild ? "Guild" : "User");
|
||||||
|
|
@ -29,7 +24,8 @@ module.exports = class avatar extends commando.Command {
|
||||||
errLog(docErr, msg, this.client);
|
errLog(docErr, msg, this.client);
|
||||||
}
|
}
|
||||||
const footerQuote = r?.["settings"]?.defaultEmbed?.footerQuote;
|
const footerQuote = r?.["settings"]?.defaultEmbed?.footerQuote;
|
||||||
const withPerm = arg.trim().split(/,/);
|
const withPerm = arg.trim().split(/,+/);
|
||||||
|
console.log(withPerm);
|
||||||
const option = arg.trim().split(/(\-\-)+/);
|
const option = arg.trim().split(/(\-\-)+/);
|
||||||
let user, avatar, member, show;
|
let user, avatar, member, show;
|
||||||
let [allEmb, multipleMemMes, dupliCheck] = [[], [], []];
|
let [allEmb, multipleMemMes, dupliCheck] = [[], [], []];
|
||||||
|
|
@ -55,22 +51,11 @@ module.exports = class avatar extends commando.Command {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (arg) {
|
if (args.length !== 0) {
|
||||||
for(const theAvThis of args) {
|
for(const theAvThis of args) {
|
||||||
const avThis = theAvThis.replace(/\-\-show *\d*/i, "");
|
const avThis = theAvThis.replace(/\-\-show *\d*/i, "");
|
||||||
let uID = avThis.trim();
|
let uID = avThis.trim();
|
||||||
if (uID.startsWith('<@')) {
|
uID = cleanMentionID(uID);
|
||||||
uID = uID.slice(2);
|
|
||||||
}
|
|
||||||
if (uID.startsWith('!')) {
|
|
||||||
uID = uID.slice(1);
|
|
||||||
}
|
|
||||||
if (uID.endsWith('>')) {
|
|
||||||
uID = uID.slice(0,-1)
|
|
||||||
}
|
|
||||||
if (uID.startsWith("@")) {
|
|
||||||
uID = uID.slice(1);
|
|
||||||
}
|
|
||||||
if (uID.length === 1) {
|
if (uID.length === 1) {
|
||||||
return trySend(this.client, msg, "One character for searching member isn't allowed <:catstareLife:794930503076675584>");
|
return trySend(this.client, msg, "One character for searching member isn't allowed <:catstareLife:794930503076675584>");
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -103,7 +88,7 @@ module.exports = class avatar extends commando.Command {
|
||||||
} else {
|
} else {
|
||||||
dupliCheck.push(ree[0].id);
|
dupliCheck.push(ree[0].id);
|
||||||
user = ree[0].user ?? ree[0];
|
user = ree[0].user ?? ree[0];
|
||||||
multipleMemMes.push(await multipleMembersFound(this.client, msg, ree, uID, show));
|
multipleMemMes.push(multipleMembersFound(this.client, msg, ree, uID, show));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (user) {
|
if (user) {
|
||||||
|
|
|
||||||
53
cmds/utility/lookup.js
Normal file
53
cmds/utility/lookup.js
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const commando = require("@iceprod/discord.js-commando");
|
||||||
|
const { cleanMentionID, findMemberRegEx, multipleMembersFound, trySend } = 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."
|
||||||
|
});
|
||||||
|
}
|
||||||
|
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, memMes] = [[], ""];
|
||||||
|
if (args[0].toLowerCase() === "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] === undefined) {
|
||||||
|
fetchedMember = await findMemberRegEx(msg, this.client, memberID);
|
||||||
|
}
|
||||||
|
if (fetchedMember.length > 1) {
|
||||||
|
memMes = multipleMembersFound(this.client, msg, fetchedMember, memberID, show, true);
|
||||||
|
} else {
|
||||||
|
if (fetchedMember.length === 0) {
|
||||||
|
return trySend(this.client, msg, `No member found for: **${memberID}**`);
|
||||||
|
}
|
||||||
|
memMes = `Member found for: **${memberID}**\`\`\`md\n# ${fetchedMember[0].user.tag} (${fetchedMember[0].user.id})\`\`\``;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (memMes.length > 0) {
|
||||||
|
return trySend(this.client, msg, memMes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -171,17 +171,19 @@ async function ranLog(msg, cmd, addition) {
|
||||||
* @param {GuildMember[]} arr - Test array
|
* @param {GuildMember[]} arr - Test array
|
||||||
* @param {String} key - Keyword
|
* @param {String} key - Keyword
|
||||||
* @param {Number} max - Max length
|
* @param {Number} max - Max length
|
||||||
* @returns {Promise<String>}
|
* @param {Boolean} withID - Include user_ID
|
||||||
|
* @returns {String}
|
||||||
*/
|
*/
|
||||||
async function multipleMembersFound(client, msg, arr, key, max) {
|
function multipleMembersFound(client, msg, arr, key, max = 5, withID) {
|
||||||
if (!max) {
|
|
||||||
max = 5;
|
|
||||||
}
|
|
||||||
if (arr.length > 1) {
|
if (arr.length > 1) {
|
||||||
try {
|
try {
|
||||||
let multipleFound = [];
|
let multipleFound = [];
|
||||||
for(const one of arr) {
|
for(const one of arr) {
|
||||||
multipleFound.push((await (client.users.fetch(one.id))).tag);
|
let mes = one.user.tag;
|
||||||
|
if (withID) {
|
||||||
|
mes = mes + ` (${one.user.id})`;
|
||||||
|
}
|
||||||
|
multipleFound.push(mes);
|
||||||
}
|
}
|
||||||
let multi = [];
|
let multi = [];
|
||||||
for(const mu of multipleFound) {
|
for(const mu of multipleFound) {
|
||||||
|
|
@ -323,7 +325,27 @@ async function defaultImageEmbed(client, msg, image, author, title, footerText)
|
||||||
return emb;
|
return emb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return clean ID of provided key
|
||||||
|
* @param {String} key - Mention | Channel Name | Username | Rolename
|
||||||
|
* @returns {String} Clean ID
|
||||||
|
*/
|
||||||
|
function cleanMentionID(key) {
|
||||||
|
let uID = key.trim();
|
||||||
|
if (uID.startsWith('<@') || uID.startsWith('<#')) {
|
||||||
|
uID = uID.slice(2);
|
||||||
|
}
|
||||||
|
if (uID.endsWith('>')) {
|
||||||
|
uID = uID.slice(0,-1)
|
||||||
|
}
|
||||||
|
if (uID.startsWith('!') || uID.startsWith("@") || uID.startsWith("#") || uID.startsWith('&')) {
|
||||||
|
uID = uID.slice(1);
|
||||||
|
}
|
||||||
|
return uID;
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
cleanMentionID,
|
||||||
multipleMembersFound,
|
multipleMembersFound,
|
||||||
findMemberRegEx, getUser,
|
findMemberRegEx, getUser,
|
||||||
getChannelMessage, errLog,
|
getChannelMessage, errLog,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue