【问题标题】:Creating a channel that only one role can join创建一个只有一个角色可以加入的频道
【发布时间】:2018-07-02 06:44:39
【问题描述】:

我正在尝试为消息作者创建一个只有 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 派对,ID 401856302290042884,我正在尝试在其中创建一个语音频道。

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

@everyone 角色的父频道401856302290042884 的权限全部关闭

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    根据您的示例,我们将假设频道与类别同步,并且该类别没有将“阅读文本频道并查看语音频道”设置为 false .在创建频道时,您没有将 @everyone 的看到语音频道权限设置为 false,而您正在设置角色的权限。你有第二步,但你错过了第一步。为了解决这个问题,我们必须将@everyone 的“See Voice Channel”权限设置为 false,同时将角色的 See 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 之前插入上述内容,它应该会产生您正在寻找的效果。编码愉快!

    【讨论】:

    • 在类别 everything 上设置为 false
    • 如果频道仍未与类别同步(因为我不相信他们正在创建机器人),这意味着无论哪种方式频道都不会产生预期的效果。
    猜你喜欢
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    相关资源
    最近更新 更多