UNPKG

dbd.js-new

Version:

dbd.js-new - Simplifica la programación de un bot de discord, dbd.js-new es una versión de dbd.js con soporte

114 lines (94 loc) 2.76 kB
const embed = require("../../handlers/errors.js"); const ms = require("ms"); const interpreter = require("../../interpreter.js"); module.exports = async (d) => { const code = d.command.code; const inside = code .split("$awaitReaction") [code.split("$awaitReaction").length - 1].after(); const err = d.inside(inside); if (err) return d.error(err); let [ userFilter, time, botMsg, reactionOrReactions, commandOrCommands, errorMessage, deleteOnCollect = "no", ] = inside.splits; if (!ms(time)) return d.error(`Invalid time '${time}' in \`$awaitReaction${inside}\``); const m = await embed(d, botMsg, "object"); for (const reaction of reactionOrReactions.split(" ").join("").split(",")) { const r = await m.react(reaction).catch((rr) => {}); if (!r) return d.error(`:x: Failed to react with '${reaction}'`); } const filter = (reaction, user) => { return reactionOrReactions .split(" ") .join("") .split(",") .some( (rc) => rc.includes(reaction.emoji.name) || rc.includes(reaction.emoji.id) ) && d.client.user.id !== user.id && userFilter === "everyone" ? true : user.id === userFilter; }; const collected = await m .awaitReactions(filter, { max: 1, time: ms(time), errors: ["time"], }) .catch((err) => {}); if (!collected) { return embed(d, errorMessage); } if (deleteOnCollect === "yes") m.delete(); const reaction = collected.first(); const command = commandOrCommands.split(" ").join("").split(",")[ reactionOrReactions .split(" ") .join("") .split(",") .findIndex( (rc) => rc.includes(reaction.emoji.name) || rc.includes(reaction.emoji.id) ) ]; if (!command) return d.error(`:x: Command '${command}' not found! (internal error)`); const cmd = d.client.awaited_commands.find((c) => c.name === command); if (!cmd) return d.error(`:x: Command '${command}' not found!`); await interpreter( d.client, { author: reaction.users.cache.find( (u) => (userFilter === "everyone" ? true : userFilter === u.id) && d.client.user.id !== u.id ), guild: d.message.guild, channel: d.message.channel, id: d.message.id, mentions: d.message.mentions, reactions: d.message.reactions, member: await d.message.guild.members.fetch( reaction.users.cache.find( (u) => (userFilter === "everyone" ? true : userFilter === u.id) && d.client.user.id !== u.id ).id ), }, [], cmd ); return { code: code.replaceLast(`$awaitReaction${inside}`, ""), }; };