Javascript 如何设置通道中的父级和权限?不协调Bot编码

Javascript 如何设置通道中的父级和权限?不协调Bot编码,javascript,discord,discord.js,bots,Javascript,Discord,Discord.js,Bots,使用命令“^new”创建频道时,如何设置父级以及权限 因此,到目前为止,我有以下代码: exports.run = async(client, msg, args) => { if (msg.author.bot) return; const reason = msg.content.split(" ").slice(1).join(" "); const SupportRole = msg.guild.role

使用命令“^new”创建频道时,如何设置父级以及权限 因此,到目前为止,我有以下代码:


exports.run = async(client, msg, args) => {
    
    if (msg.author.bot) return;

    const reason = msg.content.split(" ").slice(1).join(" ");
    const SupportRole = msg.guild.roles.cache.find(r => r.name === "Staff");

    if(!SupportRole) {
        msg.channel.send("Please create a role called 'Staff' before using this command!");
    }

    if(!reason) {
        return msg.channel.send("Please specify a reason!")
    }

const ticketChannel = await msg.guild.channels.create(`ticket-${msg.author.username}`).then(c => {
const sr = msg.guild.roles.cache.find(r => r.name === "Staff")
const everyone = msg.guild.roles.cache.find(r => r.name === "@everyone")
c.updateOverwrite(sr, {
    SEND_MESSAGES: true,
    VIEW_CHANNEL: true,
});
c.updateOverwrite(everyone, {
    SEND_MESSAGES: false,
    VIEW_CHANNEL: false,
});
c.updateOverwrite(msg.author, {
    SEND_MESSAGES: true,
    VIEW_CHANNEL: true,
});
let CreatedTicketEmbed = new Discord.MessageEmbed()
.setColor("RANDOM")
.setTitle("New Ticket")
.setDescription(`<@${msg.author.id}> Your support ticket is <#${c.id}>`)
.setTimestamp()
msg.channel.send(CreatedTicketEmbed)

let GreetEmbed = new Discord.MessageEmbed()
.setColor("RANDOM")
.setTitle("New Ticket!")
.addField(`${msg.author.username}'s Support Ticket`,"The staff team will be right with you!")
.addField("Reason:", reason)
.addField("Type ^close to close the ticket.", "Staff Team")
.setTimestamp()
c.send(GreetEmbed)
msg.delete()
}).then((channel) => {
    const categoryId = '774032663560192000';
    ticketChannel.setParent(categoryId);
})
.catch(console.error);

var channel = msg.guild.channels.cache.find(ch => ch.name === "ticket-logs")

if(!channel) return msg.channel.send("There is no channel called 'ticket-logs'");


let LogEmbed = new Discord.MessageEmbed()
.setColor("RANDOM")
.setTitle("New Support Ticket")
.addField(`${msg.author.username}'s Support Ticket`,"React with ✅ when dealing with / have dealt with ticket.")
.addField("Reason:", reason)
.setTimestamp()
channel.send(LogEmbed).then(messageReaction => {
    messageReaction.react('✅')
})
}

exports.run=async(客户端、消息、参数)=>{
如果(msg.author.bot)返回;
const reason=msg.content.split(“”).slice(1.join(“”);
const SupportRole=msg.guild.roles.cache.find(r=>r.name==“Staff”);
如果(!SupportRole){
msg.channel.send(“请在使用此命令之前创建一个名为“Staff”的角色!”);
}
如果(!原因){
返回msg.channel.send(“请指定原因!”)
}
const ticketChannel=wait msg.guild.channels.create(`ticket-${msg.author.username}`)。然后(c=>{
const sr=msg.guild.roles.cache.find(r=>r.name==“Staff”)
constEveryone=msg.guild.roles.cache.find(r=>r.name==“@everyone”)
c、 更新重写(sr{
发送消息:正确,
查看频道:正确,
});
c、 更新覆盖(每个人{
发送消息:false,
查看频道:错误,
});
c、 updateOverwrite(msg.author{
发送消息:正确,
查看频道:正确,
});
让CreatedTicketEmbed=newdiscord.MessageEmbed()
.setColor(“随机”)
.setTitle(“新票”)
.setDescription(`Your support ticket is`)
.setTimestamp()文件
msg.channel.send(CreatedTicketEmbed)
让GreetEmbed=newdiscord.MessageEmbed()
.setColor(“随机”)
.setTitle(“新票!”)
.addField(`${msg.author.username}的支持票证`,“员工团队马上就来!”
.addField(“原因:,原因”)
.addField(“键入^close以关闭票据。”,“员工团队”)
.setTimestamp()文件
c、 发送(GreetEmbed)
msg.delete()
})。然后((频道)=>{
const categoryId='774032663560192000';
ticketChannel.setParent(categoryId);
})
.catch(控制台错误);
var channel=msg.guild.channels.cache.find(ch=>ch.name==“票证日志”)
如果(!channel)返回msg.channel.send(“没有名为“票证日志”的频道”);
让LogEmbed=newdiscord.MessageEmbed()
.setColor(“随机”)
.setTitle(“新支持票”)
.addField(`${msg.author.username}的支持票证`,''用✅ 当处理/已处理票证时。”)
.addField(“原因:,原因”)
.setTimestamp()文件
channel.send(LogEmbed).then(messageReaction=>{
messageReaction.react('✅')
})
}

因此,当我同时拥有setParent和updateOverwrite代码时,它要么不将它们移动到类别下,要么不设置权限,它们也不发送我创建的嵌入。我该如何解决这一问题?

您可以在
通道内执行所有这些操作。create()
函数。选中请详细说明?的第二个参数是一个对象,该对象接受
父对象
并覆盖
属性,因此您可以在初始函数中设置所有属性,而不是使用
then()
function。如何设置该函数的父级,我将其更改为;
const sr=msg.guild.roles.cache.find(r=>r.name==“Staff”)const everyone=msg.guild.roles.cache.find(r=>r.name==“everyone”)msg.guild.channels.create(
ticket-${msg.author.username}
,{键入:“text”,权限覆盖:[{id:msg.author.id,允许:['VIEW_CHANNEL','SEND_MESSAGES','READ_MESSAGE_HISTORY'],},{id:sr.id,允许:['VIEW_CHANNEL','SEND_MESSAGES','READ_MESSAGE_HISTORY'],},})
Ah,我想出来了。感谢您的帮助:您可以在
channels.create()中完成所有这些操作,而不用创建回调
函数。选中请详细说明?的第二个参数是一个对象,该对象接受
父对象
并覆盖
属性,因此您可以在初始函数中设置所有属性,而不是使用
then()
function。如何设置该函数的父级,我将其更改为;
const sr=msg.guild.roles.cache.find(r=>r.name==“Staff”)const everyone=msg.guild.roles.cache.find(r=>r.name==“everyone”)msg.guild.channels.create(
ticket-${msg.author.username}
,{键入:“text”,权限覆盖:[{id:msg.author.id,allow:['VIEW_CHANNEL','SEND_MESSAGES','READ_MESSAGES_HISTORY'],},{id:sr.id,allow:['VIEW_CHANNEL','SEND_MESSAGES','READ_MESSAGES_HISTORY'],},,})
啊,我想出来了。谢谢你的帮助:D