我正在将我的机器人转换为与discord.js的master分支一起使用
我接到了票务命令,并且它们发生了很大变化,除了overwritePermissions
部分,我设法做了所有事情。我不确定为什么代码不起作用。
如果我删除了底部的2个overwritePermissions
部分,则可以正常运行,但如果全部显示3个,则都不执行。
let role = message.channel.guild.defaultRole;
let role2 = message.guild.roles.find(x => x.name === "Support Team");
message.guild.channels.create(`ticket-test`, {type: 'text'}).then(c => {
c.overwritePermissions({
permissionOverwrites: [{
id: role.id,
deny: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
}]
});
c.overwritePermissions({
permissionOverwrites: [{
id: role2.id,
deny: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
}]
});
c.overwritePermissions({
permissionOverwrites: [{
id: message.author.id,
allow: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
}]
});
});
我已经完成console.log(role.id)
和console.log(role2.id
,它们都显示正确的ID,只是不执行代码。
答案 0 :(得分:1)
您无需重复overwritePermissions()
方法,而只需在第一channel creation options中列出您的权限覆盖即可。 type
的默认值已经是一个文本通道,因此您也可以忽略该选项。最后,您应该始终抓住承诺。
const everyone = message.guild.defaultRole;
const support = message.guild.roles.find(r => r.name === 'Support Team');
message.guild.channels.create('ticket-test', {
permissionOverwrites: [
{
id: everyone.id,
deny: 'VIEW_CHANNEL'
}, {
id: support.id,
allow: 'VIEW_CHANNEL'
}, {
id: message.author.id,
allow: 'VIEW_CHANNEL'
}
]
}).catch(err => console.error(err));