创建只有一个角色可以加入的频道

时间:2018-01-23 12:32:26

标签: javascript node.js discord discord.js

我正在尝试为消息作者创建一个频道,只有来自partyInvitees集合(Collection<Snowflake, GuildMember>)的成员才能加入。

const permission = Discord.Permissions.FLAGS;

message.guild.createRole({
  name: message.author.username + "'s Party",
})
.then(role => {
  message.guild.createChannel(message.author.username + "'s Party", 'voice')
  .then(channel => {
    channel.setParent('401856302290042884');
    channel.overwritePermissions(role, { [permission.CONNECT]: true, [permission.SPEAK]: true });
    partyInvitees.forEach(user => user.addRole(role));
    message.reply("your party's all set-up");
  });
});

我有一个CategoryChannel派对,标识为401856302290042884,我正在尝试创建一个语音频道。

我希望只有message.author.username + "'s Party"角色的人才能加入此语音频道。

对于@everyone角色

,所有父频道401856302290042884的权限都已关闭

1 个答案:

答案 0 :(得分:0)

根据您的示例,我们将假设该频道与该类别同步,并且该类别没有&#34;阅读文字频道&amp;请参阅语音频道&#34;设为false。在创建频道时,在设置角色的权限时,您并未将@ everyone的设置视为语音频道权限为false。你有第二步,但你错过了第一步。要解决此问题,我们必须设置@ everyone的权限#34;请参阅语音频道&#34;如果设置角色,请将Voice Chanel权限设置为true。我们可以使用您用来设置角色权限的overwritePermissions方法:

const everyone = message.guild.roles.find("@" + "everyone"); // We seperate it that way if it's run in eval, it won't tag.
channel.overwritePermissions(everyone, {"VIEW_CHANNEL": false});

如果您在角色的overwritePermissions之前插入上述内容,则应该提供您正在寻找的效果。快乐的编码!