discord_bot/commands/utility/findemoji.js

101 lines
4.0 KiB
JavaScript
Raw Normal View History

const discord = require('discord.js')
const fetch = require("node-fetch")
module.exports = {
name: "findemoji",
aliases: ["finde", "fe"],
category: "utility",
description: "Stiehlt Emoji von anderen Servern auf Ihren Server.",
authorPermission: ["MANAGE_EMOJIS"],
run: async (client, message, args) => {
if (!message.member.hasPermission("MANAGE_EMOJIS")) {
return message.channel.send(`Sie haben keine Berechtigung, diesen Befehl zu verwenden! Emojis verwalten`)
}
let emojis = await fetch("https://emoji.gg/api/").then(res => res.json());
const q = args.join(" ").toLowerCase().trim().split(" ").join("_");
let matches = emojis.filter(s => s.title == q || s.title.includes(q));
let noResult = new discord.MessageEmbed()
.setDescription(`| :x: No Results found for ${args.join(" ")}!`)
.setColor("FF2052")
if (!matches.length) return message.channel.send(noResult)
let page = 0;
let embed = new discord.MessageEmbed()
.setTitle(matches[page].title)
.setURL("https://discordemoji.com/emoji/" + matches[page].slug)
.setColor("00FFFF")
.setImage(matches[page].image)
.setFooter(`Emoji ${page + 1}/${matches.length}`);
const msg = await message.channel.send(embed);
emojis = ["◀️", "▶️", "✅", "❌"];
msg.react(emojis[0]);
msg.react(emojis[1]);
msg.react(emojis[2]);
msg.react(emojis[3]);
const filter = (r, u) => emojis.includes(r.emoji.name.trim()) && u.id == message.author.id;
let doing = true;
while (doing) {
let reaction;
try { reaction = await msg.awaitReactions(filter, { max: 1, time: 120000, errors: ["time"] })}
catch { message.channel.send(message.author.toString() + ", Du hast zu lange gebraucht."); msg.reactions.removeAll() ; doing = false; return; };
reaction = reaction.first();
const rmsg = reaction.message;
if (reaction.emoji.name == emojis[0]) {
page--;
if (!matches[page]) {
page++;
rmsg.reactions.resolve(reaction.emoji.name).users.remove(message.author.id).catch(err => {})
} else {
let newembed = new discord.MessageEmbed()
.setTitle(matches[page].title)
.setURL("https://discordemoji.com/emoji/" + matches[page].slug)
.setColor("00FFFF")
.setImage(matches[page].image)
.setFooter(`Emoji ${page + 1}/${matches.length}`);
msg.edit(newembed);
rmsg.reactions.resolve(reaction.emoji.name).users.remove(message.author.id).catch(err => {})
}
} else if (reaction.emoji.name == emojis[1]) {
page++;
if (!matches[page]) {
page--;
rmsg.reactions.resolve(reaction.emoji.name).users.remove(message.author.id).catch(err => {})
} else {
let newembed = new discord.MessageEmbed()
.setTitle(matches[page].title)
.setURL("https://discordemoji.com/emoji/" + matches[page].slug)
.setColor("00FFFF")
.setImage(matches[page].image)
.setFooter(`Emoji ${page + 1}/${matches.length}`);
msg.edit(newembed);
rmsg.reactions.resolve(reaction.emoji.name).users.remove(message.author.id).catch(err => {})
}
} else if (reaction.emoji.name == emojis[2]) {
const res = matches[page];
let created;
message.channel.startTyping();
try {
created = await message.guild.emojis.create(res.image, res.title);
message.channel.stopTyping();
} catch {
message.channel.stopTyping();
message.channel.send(`${res.title} kann nicht hinzugefügt werden..`);
rmsg.reactions.resolve(reaction.emoji.name).users.remove(message.author.id).catch(err => {})
doing = false;
break;
}
message.channel.send(`Erfolgreich hinzugefügt ${created}!`);
rmsg.reactions.resolve(reaction.emoji.name).users.remove(message.author.id).catch(err => {})
doing = false;
break;
} else if (reaction.emoji.name == emojis[3]) {
message.channel.send("Befehl Abbrechen.");
msg.reactions.removeAll();
return;
}};
}
}