首页 > 解决方案 > 创建后检索频道 ID

问题描述

我正在尝试同时创建一个类别和一个频道,将频道的父级设置为所述类别。但是,当我搜索通道缓存时,它会为我正在搜索的类别返回 undefined。

    message.guild.channels.create(`Category ${f.number}`, {
        type: 'category',
        permissionOverwrites: [
            {
                //everyone
                id: '762492106156539945',
                deny: ['VIEW_CHANNEL']
            },
            {
                //verified
                id: '763048301552992346',
                allow: ['VIEW_CHANNEL']
            }
        ]
    });
    message.guild.channels.create(`cat-${f.number}-chat`, {
        type: 'text'
    }).then(channel => {
        var category = message.guild.channels.cache.get("name", `Category ${f.number}`);
        channel.setParent(category.id);
      }).catch(console.error);

控制台正在打印“TypeError:无法读取未定义的属性 'id'”。稍后我还需要以某种方式删除频道和类别。

标签: javascriptdiscord.js

解决方案


等待两个创作完成首先使用Promise.all

const categoryPromise = message.guild.channels.create(`Category ${f.number}`, {
    type: 'category',
    permissionOverwrites: [
        {
            //everyone
            id: '762492106156539945',
            deny: ['VIEW_CHANNEL']
        },
        {
            //verified
            id: '763048301552992346',
            allow: ['VIEW_CHANNEL']
        }
    ]
});
const channelPromise = message.guild.channels.create(`cat-${f.number}-chat`, {
    type: 'text'
})

Promise.all([categoryPromise, channelPromise])
  .then(([category, channel]) => {
    channel.setParent(category);
  }).catch(console.error);

推荐阅读