overwritePermissions无法正常运行| Discord.js主

时间:2019-05-12 23:58:52

标签: javascript node.js discord.js

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

1 个答案:

答案 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));