#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. даже если я изменю код назначения роли, он ничего не сделает