【问题标题】:Discord.js Check Every Roles Permissions of a ChannelDiscord.js 检查频道的每个角色权限
【发布时间】:2021-03-02 08:22:50
【问题描述】:

我正在尝试创建一个命令,从机器人所在的服务器 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)
  }

【问题讨论】:

    标签: javascript node.js discord discord.js bots


    【解决方案1】:

    我只是需要这样做

     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)
      }
    

    【讨论】:

      【解决方案2】:

      Discord 已经有服务器模板功能

      【讨论】:

      • 这不能回答我的问题,它会创建一个全新的服务器,而不是在现有服务器 ID 中创建频道 ...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      • 2021-03-30
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      相关资源
      最近更新 更多