如何获取频道ID或新创建频道的名称

时间:2020-09-26 16:54:03

标签: discord discord.js

我的discord bot有一个命令来创建频道,但我试图弄清楚如何在创建频道后立即获取其ID或名称。

构成渠道的代码行:

PHAsset

原因是,由于显示名中的频道名中不能包含字符,并且不和谐会自动删除这些字符,因此在某些情况下,没有实际的方法可以预测频道名。我可能缺少一个简单的解决方案,在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

GuildChannelManager#create方法返回带有刚刚创建的频道的Promise。您可以使用Promise.then()来获取频道。

Guild.channels.create(`ticket-${message.member.displayName}`, {
    parent: "744477882730020965"
}).then(channel => {
    message.channel.send(`I've created the channel ${channel.name}!`);
}).catch(error => {
    console.error(error);
    message.channel.send(`Couldn't create the channel. Check the console for the error.`);
});

如果要在async function中创建频道,则可以使用await来避免.then()的可读性。

const Channel = await Guild.channels.create(`ticket-${message.member.displayName}`, {
    parent: "744477882730020965"
}).catch(error => {
    console.error(error);
    message.channel.send(`Couldn't create the channel. Check the console for the error.`);
});

答案 1 :(得分:-1)

您需要什么ID?您可以使用then函数执行任何操作来编辑频道。

尝试一下?

let role = message.guild.roles.find("name", "@everyone");

message.guild.channels.create('ticket ' + message.member.displayName, { parent: '744477882730020965' }).then(c => {
c.overwritePermissions(role, {
            SEND_MESSAGES: false,
            READ_MESSAGES: false
        });
        c.overwritePermissions(message.author, {
            SEND_MESSAGES: true,
            READ_MESSAGES: true
        });
message.reply(`Application created!`)
c.send(`Wait for support staff`)
}).catch(console.error);