DiscordJS извлекает идентификатор роли

#javascript #node.js #discord

#javascript #node.js #Discord

Вопрос:

Я испытываю проблему с моим ботом Discord. Что делает id, он создает канал по команде и присваивает конкретной роли разрешение «VIEW_CHANNEL». Теперь проблема в том, что мне нужно получить идентификатор роли. Я пробовал это (код ниже), но это не работает.

let admin = message.guild.roles.cache.find(role => role.name === "LuisChatAdmin").id;

РЕДАКТИРОВАТЬ: Вот ошибка. Извините, я забыл прикрепить его.

(node:11956) UnhandledPromiseRejectionWarning: TypeError [INVALID_TYPE]: Supplied parameter is not a User nor a Role. at Function.resolve (C:UsersUserDesktopStuffScheiße die sich verpissen sollLuisChatnode_modulesdiscord.jssrcstructuresPermissionOverwrites.js:177:28) at C:UsersUserDesktopStuffScheiße die sich verpissen sollLuisChatnode_modulesdiscord.jssrcmanagersGuildChannelManager.js:109:81 at Array.map (<anonymous>) at GuildChannelManager.create (C:UsersUserDesktopStuffScheiße die sich verpissen sollLuisChatnode_modulesdiscord.jssrcmanagersGuildChannelManager.js:109:51) at Client.<anonymous> (C:UsersUserDesktopStuffScheiße die sich verpissen sollLuisChatbot.js:230:34) at Client.emit (events.js:333:22) at MessageCreateAction.handle (C:UsersUserDesktopStuffScheiße die sich verpissen sollLuisChatnode_modulesdiscord.jssrcclientactionsMessageCreate.js:31:14) at Object.module.exports [as MESSAGE_CREATE] (C:UsersUserDesktopStuffScheiße die sich verpissen sollLuisChatnode_modulesdiscord.jssrcclientwebsockethandlersMESSAGE_CREATE.js:4:32) at WebSocketManager.handlePacket (C:UsersUserDesktopStuffScheiße die sich verpissen sollLuisChatnode_modulesdiscord.jssrcclientwebsocketWebSocketManager.js:384:31) at WebSocketShard.onPacket (C:UsersUserDesktopStuffScheiße die sich verpissen sollLuisChatnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:444:22)

ПРАВКА 2: вот весь код:

client.on('message', message => { if (message.content === "!setup") { if (message.channel.type === "text") { let admin = message.guild.roles.cache.find(role => role.name === "LuisChatAdmin").id; let bot = "752206832843620525"; if (message.guild.member(message.author).hasPermission("ADMINISTRATOR")) { message.delete(); if (message.guild.roles.cache.find(role => role.name === "LuisChatBypass")) { message.channel.send({ embed: { color: 15158332, author: { }, title: "Fehler", description: "Die Rollen existieren bereits.", }}) } else { message.guild.roles.create({ data: { name: "LuisChat Bypass", color: 'GREEN', } }) message.guild.roles.create({ data: { name: 'LuisChat Admin', color: 'RED', } }); message.guild.channels.create('luischat', { type: 'category', permissionOverwrites: [ { id: bot, allow: ['SEND_MESSAGES', 'VIEW_CHANNEL'], }, { id: admin, allow: ['VIEW_CHANNEL'], }, { id: message.guild.id, deny: ['VIEW_CHANNEL'], } ] }) } } } } })

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

1. » Это не работает » Откуда вы это знаете? Вы заметили какие-либо ошибки? Если да, то почему вы не предоставили их здесь?

2. Судя по ошибке, проблема не в этой строке. Проблема в том, что вы неправильно настроили разрешения канала. Пожалуйста, предоставьте также этот код.

Ответ №1:

Попробуйте это

 if(message.member.roles.cache.some(r=>["USER ROL"].includes(r.name)) ) {
    message.channel.send('MESSAGE')
} else {
    message.channel.send('u can't use because you don´t have permissions')
}
  

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

1. Спасибо за вашу помощь. У меня это сработало.