有没有办法让这段代码更短? (反应收集器)

Is there a way to make this code shorter? (reaction collector)

const backwardsFilter = (reaction, user) => reaction.emoji.name === '⏪' && user.id === message.author.id;
const forwardsFilter = (reaction, user) => reaction.emoji.name === '⏩' && user.id === message.author.id;
const backwards = msg.createReactionCollector(backwardsFilter, {time: 90000});
const forwards = msg.createReactionCollector(forwardsFilter, {time: 90000});

我试图为两个收集器制作一个过滤器,但仍然必须输入此 (x,y,z) => filter(x,y,z,'⏪')

const filter = (reaction, user, c, emoji) => reaction.emoji.name === emoji && user.id === message.author.id;
const backwards = msg.createReactionCollector((x,y,z) => filter(x,y,z,'⏪'), {time: 90000});
const forwards = msg.createReactionCollector((x,y,z) => filter(x,y,z,'⏩'), {time: 90000});

您可以创建一个高阶函数,一个接受您要查找的字符的函数,returns一个接受三个参数的函数(reactionuserc,对应你当前的(x, y, x) =>)和returns相应的过滤操作。

此外,这里的任何代码中似乎都没有使用 c(与 z 相同),因此请随意将其从参数列表中删除。

const makeFilter = emoji => (reaction, user) => reaction.emoji.name === emoji && user.id === message.author.id;
const backwards = msg.createReactionCollector(makeFilter('⏪'), {time: 90000});
const forwards = msg.createReactionCollector(makeFilter('⏩'), {time: 90000});