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

125 lines (104 loc) 2.94 kB
const ms = require("ms"); const interpreter = require("../../interpreter.js"); module.exports = async (d) => { const code = d.command.code; const inside = d.unpack(); const err = d.inside(inside); if (err) return d.error(err); const [ messageID, userFilter, time, reactionOrReactions, commandOrCommands, removeReactions = "no", ] = inside.splits; if (!time) return d.error(`:x: Not enough fields in \`$reactionCollector${inside}\``); if (!ms(time)) return d.error( `:x: Failed to parse '${time}' in \`$reactionCollector${inside}\`` ); const msg = await d.message.channel.messages .fetch(messageID) .catch((err) => {}); if (!msg) return d.error(`:x: Invalid message ID in \`$reactionCollector${inside}\``); for (const reaction of reactionOrReactions.split(" ").join("").split(",")) { const r = await msg.react(reaction.addBrackets()).catch((Err) => null); 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 collector = msg.createReactionCollector(filter, { time: ms(time), }); collector.on("collect", async (reaction, user) => { if (user.partial) { await user.fetch(); } if (removeReactions === "yes") { reaction.users.remove(user.id).catch((err) => {}); } 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!`); const { type, flags, createdTimestamp, createdAt, reference, partial, pinnable, } = d.message; await interpreter( d.client, { type, flags, reference, partial, createdTimestamp, createdAt, pinnable, author: user, guild: d.message.guild, id: d.message.id, channel: d.message.channel, mentions: d.message.mentions, reactions: d.message.reactions, member: await d.message.guild.members.fetch(user.id), message: msg, }, [messageID], cmd ); }); return { code: code.replaceLast(`$reactionCollector${inside}`, ""), }; };