discord.js BOT - 使用权限创建频道时出错

时间:2021-05-16 00:31:05

标签: javascript discord.js

我正在执行一个机器人,它可以帮助我为锦标赛创建许多具有特定权限的频道。频道名称是“Team1-vs-Team2”。在服务器中,我们定义了与每个团队同名的角色(即来自“BarcelonaFC”的成员有一个名为“BarcelonaFC”的角色)

所以,假设本轮巴塞罗那对阵皇家马德里,那么执行的命令将是:

  $stage
  BarcelonaFC-vs-RealMadrid

然后,结果应该是创建一个名为“BarcelonaFC-vs-RealMadrid”的频道,并为其分配了具有特定权限的角色 BarcelonaFC 和 RealMadrid

这是我的代码(仅调整为使用 HOME 信息分配 BarcelonaFC 角色):

client.on('message', (message) => {
if (message.author.bot) return;
if (message.content.startsWith(process.env.PREFIX)) {
    const [CMD_NAME, ...args] = message.content
        .trim()
        .substring(process.env.PREFIX.length)
        .split(/\n+/);
    if (CMD_NAME === 'del') {
        message.guild.channels.cache.forEach(channel => channel.delete());
        message.guild.channels.create('General', { type: 'text' });
        message.guild.channels.create('FRENTE XXXX', { type: 'category' });
    }
    if (CMD_NAME === 'stage') {
        if (args.length == 0) return message.reply('Please provide a stage number and teams');
        var i;
        for (i = 0; i < process.env.QTY_LLAVES; i++) {
            const [HOME, AWAY] = args[i].split('-vs-');
            let roleH = message.guild.roles.cache.find(r => r.name === HOME);

            message.guild.channels.create(args[i], { 
                type: 'text',
                permissionOverwrites: [
                    {
                        id: roleH.id,
                        allow: permAllowed,
                        deny: permDenied,

                    },
                ],
            
            }).then((channel) => {
                const categoryId = message.guild.channels.cache.find(cat => cat.name === 'FRENTE XXXX');
                channel.setParent(categoryId);
                
            })

因此,我在权限覆盖中的以下行中出现错误:

     id: roleH.id,

错误获取

   C:\Users\alexi\Desktop\Discord\OESTE-FWT\pikabot\src\pikabot.js:121
                        id: roleH.id,
                                  ^

TypeError: Cannot read property 'id' of undefined
    at Client.<anonymous> (C:\Users\alexi\Desktop\Discord\OESTE-FWT\pikabot\src\pikabot.js:121:39)

我需要帮助以确定为什么“未定义”以及为什么我收到此错误。 提前致谢

编辑:roleH 分配后,我运行了一个 console.log(roleH) 并在第一次迭代中得到这个: 重要提示:我在这里使用的角色称为“boca”(这是一个拉丁团队)。很抱歉没有使用过巴塞罗那或皇家马德里。

Role {
  guild: <ref *1> Guild {
    members: GuildMemberManager {
      cacheType: [class Collection extends Collection],
      cache: [Collection [Map]],
      guild: [Circular *1]
    },
    channels: GuildChannelManager {
      cacheType: [class Collection extends Collection],
      cache: [Collection [Map]],
      guild: [Circular *1]
    },
    roles: RoleManager {
      cacheType: [class Collection extends Collection],
      cache: [Collection [Map]],
      guild: [Circular *1]
    },
    presences: PresenceManager {
      cacheType: [class Collection extends Collection],
      cache: Collection(0) [Map] {}
    },
    voiceStates: VoiceStateManager {
      cacheType: [class Collection extends Collection],
      cache: Collection(0) [Map] {},
      guild: [Circular *1]
    },
    deleted: false,
    available: true,
    id: '836369921939210250',
    shardID: 0,
    name: "pilo's server",
    icon: null,
    splash: null,
    discoverySplash: null,
    region: 'brazil',
    memberCount: 3,
    large: false,
    features: [],
    applicationID: null,
    afkTimeout: 300,
    afkChannelID: null,
    systemChannelID: null,
    embedEnabled: undefined,
    premiumTier: 0,
    premiumSubscriptionCount: 0,
    verificationLevel: 'NONE',
    explicitContentFilter: 'DISABLED',
    mfaLevel: 0,
    joinedTimestamp: 1619656895701,
    defaultMessageNotifications: 'ALL',
    systemChannelFlags: SystemChannelFlags { bitfield: 0 },
    maximumMembers: 100000,
    maximumPresences: null,
    approximateMemberCount: null,
    approximatePresenceCount: null,
    vanityURLCode: null,
    vanityURLUses: null,
    description: null,
    banner: null,
    rulesChannelID: null,
    publicUpdatesChannelID: null,
    preferredLocale: 'en-US',
    ownerID: '440862122201579520',
    emojis: GuildEmojiManager {
      cacheType: [class Collection extends Collection],
      cache: Collection(0) [Map] {},
      guild: [Circular *1]
    }
  },
  id: '840675247035383890',
  name: 'boca',
  color: 2123412,
  hoist: false,
  rawPosition: 5,
  permissions: Permissions { bitfield: 1983368913 },
  managed: false,
  mentionable: false,
  deleted: false
}

1 个答案:

答案 0 :(得分:0)

Bot 找不到从提供的消息中拆分出来的给定名称角色,请确保您拥有与 bot 正在寻找的名称相同的角色。