mirror of
https://github.com/danbulant/Shasha
synced 2026-05-24 20:31:47 +00:00
182 lines
No EOL
6.6 KiB
JavaScript
182 lines
No EOL
6.6 KiB
JavaScript
'use strict';
|
|
|
|
const commando = require("@iceprod/discord.js-commando");
|
|
const { MessageEmbed } = require("discord.js");
|
|
const { ranLog, errLog, trySend, findMemberRegEx, multipleMembersFound, cleanMentionID } = require("../../resources/functions");
|
|
const { database } = require("../../database/mongo");
|
|
const { randomColors } = require("../../config.json");
|
|
|
|
module.exports = class avatar extends commando.Command {
|
|
constructor(client) {
|
|
super(client, {
|
|
name: "avatar",
|
|
aliases:["av","avat"],
|
|
memberName: "avatar",
|
|
group: "utility",
|
|
description: "Avatar showcase."
|
|
});
|
|
}
|
|
async run(msg, arg) {
|
|
const doc = msg.guild?.id ?? msg.author.id;
|
|
const config = database.collection(msg.guild ? "Guild" : "User");
|
|
config.findOne({document: doc}, async (docErr, r) => {
|
|
if (docErr) {
|
|
errLog(docErr, msg, this.client);
|
|
}
|
|
const footerQuote = r?.["settings"]?.defaultEmbed?.footerQuote;
|
|
const args = arg.trim().split(/(?<!\\),+/);
|
|
const option = arg.trim().split(/(?<!\\)(\-\-)+/);
|
|
let user, avatar, member, show, notFound = "";
|
|
let [allEmb, multipleMemMes, dupliCheck] = [[], [], []];
|
|
if (!arg) {
|
|
user = msg.guild ? msg.guild.member(msg.author) : msg.author;
|
|
avatar = msg.author.displayAvatarURL({size:4096,dynamic:true});
|
|
}
|
|
let onceOnly = false;
|
|
if (msg.guild ? !msg.guild.member(msg.author).hasPermission("MANAGE_MESSAGES") : false) {
|
|
onceOnly = true;
|
|
if (args.length > 1) {
|
|
trySend(this.client, msg, "Manage messages permission required to show two or more avatar at once!");
|
|
}
|
|
}
|
|
for (const ops of option) {
|
|
if (ops.toLowerCase().startsWith("show")) {
|
|
const val = ops.trim().split(/ +/);
|
|
const theVal = val[1]?.match(/\d*/);
|
|
if (theVal[0]) {
|
|
show = parseInt(theVal[0].trim(), 10);
|
|
}
|
|
}
|
|
}
|
|
if (arg) {
|
|
for(const theAvThis of args) {
|
|
let avThis = theAvThis.replace(/\-\-show *\d*/i, "");
|
|
let uID = cleanMentionID(avThis.trim());
|
|
if (uID.length > 0) {
|
|
let ree = [];
|
|
if (/^\d{17,19}$/.test(uID)) {
|
|
const findmem = msg.guild.member(uID);
|
|
if (findmem) {
|
|
ree.push(findmem.user);
|
|
} else {
|
|
await this.client.users.fetch(uID).then(fetchUser => ree.push(fetchUser)).catch(() => {});
|
|
}
|
|
} else {
|
|
ree = findMemberRegEx(msg, uID).map(r => r.user);
|
|
}
|
|
if (ree.length > 0) {
|
|
const duplicateRes = dupliCheck.findIndex(yes => yes === ree[0].id);
|
|
if (duplicateRes !== -1) {
|
|
if (allEmb[duplicateRes].description !== null) {
|
|
allEmb[duplicateRes].setDescription(allEmb[duplicateRes].description.slice(0, -2) + ", " + avThis.trim() + "**");
|
|
} else {
|
|
allEmb[duplicateRes].setDescription(`Duplicate result for: **${avThis.trim()}**`);
|
|
}
|
|
user = undefined;
|
|
} else {
|
|
dupliCheck.push(ree[0].id);
|
|
user = ree[0];
|
|
multipleMemMes.push(multipleMembersFound(this.client, msg, ree, uID, show));
|
|
}
|
|
} else {
|
|
user = undefined;
|
|
notFound += `Can't find user: **${avThis.trim()}**\n`;
|
|
}
|
|
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 {
|
|
let emb = new MessageEmbed()
|
|
.setTitle(user.displayName ?? user.username)
|
|
.setImage(avatar)
|
|
.setFooter(footerQuote ?? "");
|
|
if (user.displayColor) {
|
|
emb.setColor(user.displayColor);
|
|
}
|
|
if (!msg.guild) {
|
|
emb.setColor(randomColors[Math.floor(Math.random() * randomColors.length)]);
|
|
}
|
|
if (emb.color === 16777215) {
|
|
emb.setColor(16777214);
|
|
}
|
|
allEmb.push(emb);
|
|
}
|
|
if (notFound.length > 0) {
|
|
trySend(this.client, msg, notFound);
|
|
}
|
|
for (let index = 0; index < allEmb.length; index++) {
|
|
const embelement = allEmb[index];
|
|
const contelement = multipleMemMes[index];
|
|
trySend(this.client, msg, { embed: embelement, content: contelement, split:{maxLength:2000,char: ", " || ",\n" || ". " || ".\n" || "," || ".",append:',```',prepend:'```md\n# ' }});
|
|
}
|
|
return ranLog(msg,'avatar',arg);
|
|
});
|
|
}
|
|
};
|
|
|
|
// Old codes
|
|
/*args = args.split(/ +/);
|
|
try {
|
|
let member;
|
|
let avUrl;
|
|
let avatar = new MessageEmbed();
|
|
if (args[0]) {
|
|
member = await getUser(this.client, args[0]);
|
|
}
|
|
if (!args[0]) {
|
|
avUrl = msg.author.displayAvatarURL({size:4096,dynamic:true});
|
|
avatar
|
|
.setColor(msg.member.displayColor)
|
|
.setTitle(msg.member.displayName);
|
|
} else
|
|
if (member) {
|
|
avUrl = member.displayAvatarURL({size:4096,dynamic:true});
|
|
try {
|
|
avatar.setColor(msg.guild.member(member).displayColor);
|
|
} catch (e) {errLog(e)}
|
|
try {
|
|
avatar
|
|
.setTitle(msg.guild.member(member).displayName);
|
|
} catch (e) {
|
|
errLog(e);
|
|
avatar
|
|
.setTitle(member.username);
|
|
}
|
|
}
|
|
if (!avUrl) {
|
|
return msg.channel.send('Who is that? I dunno them!');
|
|
}
|
|
avatar
|
|
//.setAuthor(msg.author.username, msg.author.displayAvatarURL({size:4096, dynamic:true}))
|
|
.setImage(avUrl)
|
|
.setFooter(footerQuote);
|
|
msg.channel.send(avatar);
|
|
return ranLog(msg,'avatar', `${member ? `Avatar of ${member.tag} (${member.id}): ` : `Self avatar: `} ${avUrl}`);
|
|
} catch (e) {
|
|
await msg.channel.send('Who is that? I dunno them!');
|
|
return errLog(e);
|
|
}*/ |