parent
eefbaf43fa
commit
79ea8689fc
@ -0,0 +1,105 @@ |
||||
const Discord = require('discord.js'); |
||||
|
||||
const UserData = require('../../models/user'); |
||||
const Char = require('../../models/char'); |
||||
|
||||
const ask = require('../../util/ask'); |
||||
const chs = require('../../util/anime/charsearch'); |
||||
const {Pagination} = require('../../util/pagination'); |
||||
|
||||
module.exports = { |
||||
name: "charimage", |
||||
aliases: ['ci', 'characterimage', 'charimg'], |
||||
meta: { |
||||
category: 'Anime', |
||||
description: "Add an image to a character", |
||||
syntax: '`charimage <character> <imageURL|attachedImage>` or `charimage <list> <character>`', |
||||
extra: null, |
||||
}, |
||||
help: new Discord.MessageEmbed() |
||||
.setTitle("Help -> Character Images") |
||||
.setDescription("Add an image to a character, or list the characters' images.") |
||||
.addField("Notice", "If you're not a member of Natsuki staff, this image will be submitted for reviewal.") |
||||
.addField("Syntax", "`charimage <character> <imageURL|attachedImage>` or `charimage <list> <character>`"), |
||||
async execute(message, msg, args, cmd, prefix, mention, client) { |
||||
let list = false; |
||||
if (args[0] && ['l', 'list'].includes(args[0].toLowerCase())) { |
||||
list = true; |
||||
args.shift(); |
||||
} |
||||
if (!args[0]) { |
||||
let tempchar = await ask(message, "What character would you like to add to add an image to?", 60000, false, true); |
||||
if (!tempchar) {return;} |
||||
args = tempchar.split(/\s+/g); |
||||
} |
||||
let asr = await chs(message, client, args.join(" ").trim().toLowerCase(), -700); |
||||
let fn; |
||||
if (asr === 0) { |
||||
return message.channel.send("That search returned no results! Try again?"); |
||||
} else if (asr instanceof Pagination) { |
||||
await asr.start({user: message.author.id, startPage: 1, endTime: 60000}); |
||||
await asr.message.react('✅'); |
||||
await message.channel.send("React with :white_check_mark: when you've found the character you want!"); |
||||
let arc; |
||||
try {arc = await asr.message.awaitReactions({filter: (r) => ['✅', '⏹'].includes(r.emoji.name), max: 1, errors: ['time']});} |
||||
catch {return message.reply("Looks like you didn't find the character you were looking for.");} |
||||
collected = arc.first().emoji.name; |
||||
if (collected === '✅') { |
||||
fn = client.misc.cache.chars.get(asr.getCurrentPage().title.trim()); |
||||
asr.stop(); |
||||
} |
||||
else {return message.reply("Looks like you didn't find the character you were looking for.");} |
||||
} else {fn = asr.id;} |
||||
let tu = await UserData.findOne({uid: message.author.id}); |
||||
let queue = false; |
||||
if (!tu || !tu.staff) { |
||||
message.channel.send("This image will be __submitted__ for reviewal."); |
||||
queue = true; |
||||
} |
||||
let ch = await Char.findOne({id: fn}); |
||||
|
||||
if (list) { |
||||
let pages = ch.images.map(im => new Discord.MessageEmbed() |
||||
.setTitle(ch.name) |
||||
.setDescription(`**Name:** ${ch.name}`) |
||||
.addField('Other', `**Anime**: ${client.misc.cache.animeID.get(ch.anime)}\n\n**Gender**: ${ch.gender}\n`) |
||||
.setColor("c375f0") |
||||
.setImage(im) |
||||
); |
||||
if (pages.length > 1) { |
||||
let pag = new Pagination(message.channel, pages, message, client, true); |
||||
return await pag.start({user: message.author.id, time: 60000}); |
||||
} else {return message.channel.send(pages[0].setTimestamp());} |
||||
} else { |
||||
args.shift(); |
||||
if (!args[0]) { |
||||
let tempchar = message.attachments.size |
||||
? message.attachments.first().url |
||||
: await ask(message, "Please paste the image or a link to the image you'd like to add.", 60000, false, true); |
||||
if (!tempchar) {return;} |
||||
args = tempchar.split(/\s+/g); |
||||
} |
||||
let img = args.join(" "); |
||||
if (!img.match(/^https:\/\/(?:[\w\-].?)+[\/\w\-%()_]+\.(?:png|jpg|jpeg|gif|webp)$/gm)) {return message.channel.send("I don't think that's an image. Try again?");} |
||||
if (!queue) { |
||||
ch.images.push(img); |
||||
ch.markModified('images'); |
||||
ch.save(); |
||||
} |
||||
client.guilds.fetch('762707532417335296').then(g => g.channels.cache.get('817466729293938698').send({ |
||||
embeds: [ |
||||
new Discord.MessageEmbed() |
||||
.setAuthor(message.author.username, message.author.avatarURL()) |
||||
.setTitle(`New Image ${queue ? "Submitted" : "Added"}`) |
||||
.setDescription(`For **${ch.name}** | \`${ch.id}\` from ${client.misc.cache.animeID.get(ch.anime)}`) |
||||
.setThumbnail(ch.thumbnail) |
||||
.setImage(img) |
||||
.setColor('c375f0') |
||||
.setTimestamp() |
||||
.setFooter("Natsuki") |
||||
], content: queue ? '<@330547934951112705>' : undefined |
||||
}).catch(() => {})).catch(() => {}); |
||||
return message.channel.send(`Character image ${queue ? "submitted" : "added"}.`); |
||||
} |
||||
} |
||||
}; |
Loading…
Reference in new issue