我正在将我的机器人转换为与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,只是不执行代码。

最佳答案

您不必重复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));

关于javascript - overwritePermissions无法正常运行| Discord.js主,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56104419/

10-09 17:30