如何覆盖TextChannel权限

时间:2018-07-13 11:26:27

标签: node.js discord user-permissions discord.js

我用Node.js编写了一个Discord Bot,我想用我的机器人的代码为播放器分配权限

为解释更多细节,我尝试创建棋盘游戏“ Werewolves”,以便与我的朋友在Discord上玩。我开发了该机器人(使用node.js;我是新手),当我在Discord上输入命令时,它可以向玩家发送信息以说明他在游戏中的角色。

但是我现在要阻止一些事情:例如,对于“狼人”玩家,我想授予她访问频道的权限,以便他们可以一起聊天,而其他玩家则无法查看消息(我可以用“角色”来做到这一点,但是当有人检查另一个玩家的角色时,他可以查看他的角色;而且我不认为有些东西看不到玩家的角色)

我已经检查了discord.js库,并且查看了两种解决方案;但是我不能两者兼得! 第一个:(常量“ lg”用于狼人;法语中的loup-garou ^^)

 .then(function(member) {
     let lg = new Discord.Permissions(member, 0x00000400)
 })

第二个“解决方案”:

.overwritePermissions(guild.member {
    'VIEW_CHANNEL': true 
    'SEND_MESSAGES': true 
    'READ_MESSAGE_HISTORY': true
})

我重复一遍,但是我已经在上面解释了;我试图获得一个事实,即玩家有一个新的“角色”(但这不是我要添加到他的角色),为他分配权限,以便他可以看到一个特殊频道(狼人频道,如果他是游戏中的狼人),他可以在同一频道上发送消息

这是一个屏幕(https://prnt.sc/k5qvvb):带有箭头的位置是用户应使用其名称的位置(例如,这是我的帐户^^),黄色时应具有该权限(显然不需要将其他人置于“假”状态

我没有收到任何错误,控制台没有显示任何异常...但是该机器人没有执行我想要的操作^^

感谢您的帮助:) 奥昔尔

PS:我是法国人,对不起,如果我的英语不太好^^

1 个答案:

答案 0 :(得分:1)

您的第二次尝试是正确的,但是您以用户身份传递guild.member,但这不是GuildMember(它是undefined)。因为,该属性不存在。
尝试传递UserResolvable类型的对象:<Message>.author<Message>.member

message.guild.channels.find('name', 'loups-garous')
.overwritePermissions(UserResolvable, { // Pass 'UserResolvable' type thing as described in Wiki!
  VIEW_CHANNEL: true,
  SEND_MESSAGES: true,
  READ_MESSAGE_HISTORY: true,
  ATTACH_FILES: false
});