Как я могу назначить определенную роль людям, указанным в качестве идентификатора?

#javascript #discord.js

#javascript #discord.js

Вопрос:

Я хочу использовать определенных участников (не всех)

Я попробовал это сам, но не смог.

это мой код:

      let role = message.guild.roles.cache.find(role => role.name === "jail");

     if (!role) return message.channel.send(`**${message.author.username}**, not found.`)

     var list = [524983207943340052, 223550304447234048]


     message.guild.members.cache.filter(list).forEach(member => member.roles.add(role))
     message.channel.send(`**${message.author.username}**,  ${role} .`)

 

Я получаю эту ошибку:

 (node:4480) UnhandledPromiseRejectionWarning: TypeError: fn is not a function
    at Map.filter (C:UsersuserDesktopscil botscilrolnode_modules@discordjscollectiondistindex.js:190:17)
    at Object.run (C:UsersuserDesktopscil botscilrolkomutlarsicil.js:32:34)
    at module.exports.message (C:UsersuserDesktopscil botscilrolnode_modulesproton-ioindex.js:154:21)
    at Client.<anonymous> (C:UsersuserDesktopscil botscilrolindex.js:26:16)
    at Client.emit (events.js:311:20)
    at MessageCreateAction.handle (C:UsersuserDesktopscil botscilrolnode_modulesdiscord.jssrcclientactionsMessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:UsersuserDesktopscil botscilrolnode_modulesdiscord.jssrcclientwebsockethandlersMESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:UsersuserDesktopscil botscilrolnode_modulesdiscord.jssrcclientwebsocketWebSocketManager.js:384:31)
    at WebSocketShard.onPacket (C:UsersuserDesktopscil botscilrolnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:444:22)
    at WebSocketShard.onMessage (C:UsersuserDesktopscil botscilrolnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:301:10)
(node:4480) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:4480) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
 

Комментарии:

1. Можете ли вы поделиться дополнительным кодом? fn В вашем коде, который вы загрузили сюда, нет, и именно в этом заключается проблема

2. я знаю, и я получаю эту ошибку, когда запускаю этот код, который я выбросил

3. Да, но вам нужно загрузить больше вашего кода

Ответ №1:

Хорошо, итак, фильтры в основном работают следующим образом: мы в основном просим бота вернуть нам все объекты-члены в коллекции, которые соответствуют определенному условию — отсюда и то, почему мне нравится думать об этом как «Прокрутите всех участников и верните мне всех участников, которые x» Принимая ваш код, вы в основном говорите «Прокрутите все участники и верните мне всех участников, которые id «, что, давайте будем честными, не имеет смысла.

Правильный результат, который мы хотели бы получить, — это попросить клиента вернуть всех пользователей, у которых есть определенный идентификатор, следовательно, почему нам нужно использовать установку параметра, назовем его member . с этого момента мы могли бы просто использовать .includes() функцию и определить, содержит ли массив идентификаторов идентификатор определенного участника из выбранных нами кэшированных участников.

Поэтому вместо этого ваш код должен выглядеть следующим образом:

 let role = message.guild.roles.cache.find(role => role.name === "jail");

 if (!role) return message.channel.send(`**${message.author.username}**, not found.`)

 var list = [524983207943340052, 223550304447234048]


 message.guild.members.cache.filter(member => list.includes(member.id)).forEach(member => member.roles.add(role))
 message.channel.send(`**${message.author.username}**,  ${role} .`)
 

Комментарии:

1. Есть ошибки? Попробуйте перехватить ошибку после добавления роли.

2. даже если я изменю код назначения роли, он ничего не сделает