我的discord bot有一个命令来创建频道,但我试图弄清楚如何在创建频道后立即获取其ID或名称。
构成渠道的代码行:
PHAsset
原因是,由于显示名中的频道名中不能包含字符,并且不和谐会自动删除这些字符,因此在某些情况下,没有实际的方法可以预测频道名。我可能缺少一个简单的解决方案,在此先感谢您的帮助。
答案 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);