Discord.js 检查频道的每个角色权限

我正在尝试创建一个命令,从机器人所在的服务器 ID 获取每个通道和角色,然后对于每个通道/角色,它复制服务器 ID 拥有的所有内容并创建它。创建频道时,我在获取频道中每个角色的权限时遇到问题。当我尝试执行此命令时出现错误TypeError [INVALID_TYPE]: Supplied parameter is not a User nor a Role.


 if (command === 'clone') {

          let guild = args[0]

     let findguild = client.guilds.cache.get(guild)

     let findguildchannels = findguild.channels.cache.forEach(c => message.guild.channels.create(c.name, { type: `${c.type}`,  permissionOverwrites: c.permissionOverwrites.map(v => ({

                    id: message.guild.roles.cache.forEach(role =>(role.id)),

                    allow: v.allow,

                    deny: v.deny

                })), userLimit: c.userLimit}))

    let findguildroles = findguild.roles.cache.forEach(c => message.guild.roles.create({

        data: { name: `${c.name}`,  color: '#' + c.color.toString(16), permissions: c.permissions.toArray() }

    }))

  console.log(findguildchannels)

  }


扬帆大鱼
浏览 155回答 2
2回答

富国沪深

我只需要这样做 if (command === 'clone') {          let guild = args[0]     let findguild = client.guilds.cache.get(guild)    let findguildroles = findguild.roles.cache.forEach(c => message.guild.roles.create({        data: { name: `${c.name}`,  color: '#' + c.color.toString(16), permissions: c.permissions.toArray() }    }))         let findguildchannels = findguild.channels.cache.forEach(c => message.guild.channels.create(c.name, { type: `${c.type}`, permissionOverwrites: c.permissionOverwrites.map(v => {                            let target =  message.guild.roles.cache.get(v.id);                            if (!target) return;                            return {                                id: message.guild.roles.cache.find(r => r.name === target.name),                                allow: v.allow,                                deny: v.deny                            };                        }).filter(v => v), userLimit: c.userLimit}))  console.log(findguildchannels)  }

慕无忌1623718

Discord 已经有服务器模板功能
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript