Есть ли способ сделать этот код короче?(реакционный коллектор) - PullRequest
0 голосов
/ 08 марта 2019
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});

1 Ответ

0 голосов
/ 08 марта 2019

Вы можете сделать функцию более высокого порядка , которая принимает искомый символ и возвращает функцию, которая принимает три аргумента (reaction, user и c, соответствующий вашему текущему (x, y, x) =>) и возвращает соответствующую операцию фильтрации.

Кроме того, это не похоже на то, что 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});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...