fixed in DM avatar command

This commit is contained in:
Neko Life 2021-05-09 09:12:58 +00:00
parent e2b699dd85
commit 48c12d99f9
4 changed files with 80 additions and 70 deletions

View file

@ -5,6 +5,7 @@ const { MessageEmbed } = require("discord.js");
const { ranLog, errLog, trySend, findMemberRegEx, multipleMembersFound, cleanMentionID } = 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");
const { isArray } = require("util");
module.exports = class avatar extends commando.Command { module.exports = class avatar extends commando.Command {
constructor(client) { constructor(client) {
@ -25,7 +26,6 @@ module.exports = class avatar extends commando.Command {
} }
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] = [[], [], []];
@ -37,83 +37,91 @@ module.exports = class avatar extends commando.Command {
if (!msg.guild || msg.guild.member(msg.author).hasPermission("MANAGE_MESSAGES")) { if (!msg.guild || msg.guild.member(msg.author).hasPermission("MANAGE_MESSAGES")) {
args = withPerm; args = withPerm;
} else { } else {
args = withPerm[0]; if (withPerm.length < 2) {
if (withPerm.length > 1) { args = withPerm;
} else {
args = withPerm[0];
trySend(this.client, msg, "Manage messages permission required to show two or more avatar at once!"); trySend(this.client, msg, "Manage messages permission required to show two or more avatar at once!");
} }
} }
for (const ops of option) { for (const ops of option) {
if (ops.toLowerCase().startsWith("show")) { if (ops.toLowerCase().startsWith("show")) {
const val = ops.trim().split(/ +/); const val = ops.trim().split(/ +/);
const theVal = val[1]?.trim().replace(",", ""); const theVal = val[1]?.match(/\d*/);
if (theVal && !/\D/.test(theVal)) { if (theVal[0]) {
show = parseInt(val[1].trim(), 10); show = parseInt(theVal[0].trim(), 10);
} }
} }
} }
if (args.length !== 0) { if (arg) {
let onceOnly = false;
for(const theAvThis of args) { for(const theAvThis of args) {
const avThis = theAvThis.replace(/\-\-show *\d*/i, ""); let avThis = theAvThis.replace(/\-\-show *\d*/i, "");
let uID = avThis.trim(); if (avThis.length === 1) {
uID = cleanMentionID(uID); avThis = args.replace(/\-\-show *\d*/i, "");
if (uID.length === 1) { onceOnly = true;
return trySend(this.client, msg, "One character for searching member isn't allowed <:catstareLife:794930503076675584>"); if (avThis.length === 1) {
} else { return trySend(this.client, msg, "One character for searching member isn't allowed <:catstareLife:794930503076675584>");
if (uID) { }
let ree = []; }
async function nonDigit(client) { let uID = cleanMentionID(avThis.trim());
const theree = await findMemberRegEx(msg, client, uID); if (uID.length > 1) {
if (theree.length === 0) { let ree = [];
user = undefined; async function nonDigit(client) {
trySend(client, msg, `Can't find user: **${avThis.trim()}**`); const theree = await findMemberRegEx(msg, uID);
} if (theree) {
for (const reeRes of theree) { for (const reeRes of theree) {
ree.push(reeRes); ree.push(reeRes);
} }
}
if (/\D/.test(uID)) {
await nonDigit(this.client);
} else { } else {
if (msg.guild.member(uID)) { trySend(client, msg, `Can't find user: **${avThis.trim()}**`);
ree.push(msg.guild.member(uID));
} else {
await this.client.users.fetch(uID).then(r => ree.push(r)).catch(async e => await nonDigit(this.client));
}
}
if (ree.length > 0) {
const duplicateRes = dupliCheck.findIndex(yes => yes === ree[0].id);
if (duplicateRes !== -1) {
allEmb[duplicateRes].setDescription(`Duplicate result for: **${avThis.trim()}**`);
user = undefined;
} else {
dupliCheck.push(ree[0].id);
user = ree[0].user ?? ree[0];
multipleMemMes.push(multipleMembersFound(this.client, msg, ree, uID, show));
}
}
if (user) {
avatar = user.displayAvatarURL({size:4096,dynamic:true});
let emb = new MessageEmbed()
.setImage(avatar)
.setFooter(footerQuote ?? "");
member = msg.guild ? msg.guild.member(user) : undefined;
if (member) {
emb.setTitle(member.displayName);
if (member.displayColor) {
emb.setColor(member.displayColor)
}
} else {
emb.setTitle(user.username);
}
if (!msg.guild) {
emb.setColor(randomColors[Math.floor(Math.random() * randomColors.length)]);
}
if (emb.color === 16777215) {
emb.setColor(16777214);
}
allEmb.push(emb);
} }
} }
if (/\D/.test(uID)) {
await nonDigit(this.client);
} else {
if (msg.guild?.member(uID)) {
ree.push(msg.guild.member(uID));
} else {
await this.client.users.fetch(uID).then(r => ree.push(r)).catch(async e => await nonDigit(this.client));
}
}
if (ree.length > 0) {
const duplicateRes = dupliCheck.findIndex(yes => yes === ree[0].id);
if (duplicateRes !== -1) {
allEmb[duplicateRes].setDescription(`Duplicate result for: **${avThis.trim()}**`);
user = undefined;
} else {
dupliCheck.push(ree[0].id);
user = ree[0].user ?? ree[0];
multipleMemMes.push(multipleMembersFound(this.client, msg, ree, uID, show));
}
}
if (user) {
avatar = user.displayAvatarURL({size:4096,dynamic:true});
let emb = new MessageEmbed()
.setImage(avatar)
.setFooter(footerQuote ?? "");
member = msg.guild ? msg.guild.member(user) : undefined;
if (member) {
emb.setTitle(member.displayName);
if (member.displayColor) {
emb.setColor(member.displayColor)
}
} else {
emb.setTitle(user.username);
}
if (!msg.guild) {
emb.setColor(randomColors[Math.floor(Math.random() * randomColors.length)]);
}
if (emb.color === 16777215) {
emb.setColor(16777214);
}
allEmb.push(emb);
}
}
if (onceOnly) {
break
} }
} }
} else { } else {

View file

@ -34,7 +34,7 @@ module.exports = class lookup extends commando.Command {
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, this.client, memberID); fetchedMember = await 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);

View file

@ -210,16 +210,18 @@ function multipleMembersFound(client, msg, arr, key, max = 5, withID) {
* @param {String} name * @param {String} name
* @returns {Promise<GuildMember[]>} Member object found * @returns {Promise<GuildMember[]>} Member object found
*/ */
async function findMemberRegEx(msg, client, name) { async 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.map(g => g); const list = msg.guild?.members.cache.array();
for(const mem of list) { if (list) {
if (re.test(mem.displayName) || re.test((await client.users.fetch(mem.id)).tag)) { for(const mem of list) {
found.push(mem); if (re.test(mem.displayName) || re.test(mem.user.tag)) {
found.push(mem);
}
} }
return found;
} }
return found;
} }
/** /**

View file

@ -45,7 +45,6 @@ async function shaChat(client, index, question) {
await page.waitForSelector("input[id=\"question\"]"); await page.waitForSelector("input[id=\"question\"]");
await page.type("input[id=\"question\"]", query); await page.type("input[id=\"question\"]", query);
await page.keyboard.press("Enter"); await page.keyboard.press("Enter");
await page.waitForSelector(`#answer > div:nth-child(${index})`, {timeout:5000}).catch(() => {});
return fetchAnswer(page, index); return fetchAnswer(page, index);
} catch (error) { } catch (error) {
throw error; throw error;
@ -60,6 +59,7 @@ async function shaChat(client, index, question) {
*/ */
async function fetchAnswer(page, index) { async function fetchAnswer(page, index) {
try { try {
await page.waitForSelector(`#answer > div:nth-child(${index})`, {timeout:5000}).catch(() => {});
const result = await page.evaluate((index) => { const result = await page.evaluate((index) => {
const res = document.querySelector(`#answer > div:nth-child(${index})`).childNodes[4].textContent; const res = document.querySelector(`#answer > div:nth-child(${index})`).childNodes[4].textContent;
return res; return res;