当前位置: 首页 > 知识库问答 >
问题:

如何覆盖TextChannel权限

时修贤
2023-03-14

我有一个不和谐机器人的代码,有Node.js,我想用我的机器人的代码为一个玩家分配一个权限

为了解释更多的细节,我尝试创建了一个棋盘游戏“狼人”,与我的朋友一起玩“不和谐”。我开发了这个bot(使用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):使用箭头,它是用户应该拥有其姓名的位置(例如,这里是我的帐户^^^),黄色是他应该拥有的权限(显然不需要将其他人置于“false”中)

我没有错误,控制台没有显示任何异常...但是机器人不做我想做的^^

谢谢你的帮助:)Oxzir

附言:我是法国人,如果我的英语不太好,很抱歉^^

共有1个答案

吴凯泽
2023-03-14

您的第二次尝试是正确的,但是您正在以用户的身份传递guild.member,但这不是一个工会会员(它是未定义的)。因为,该属性不存在。
尝试传递一个UserResolable类型对象

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
});

 类似资料:
  • 问题内容: 我正在尝试Backbone.js,而我正在尝试的事情之一就是调用远程API,因此,据我了解的文档资料,我需要能够覆盖Backbone.sync 。 在文档本身中没有如何执行此操作的示例,并且似乎没有用于Backbone的google组…有人可以指出执行此操作的示例吗? 问题答案: 看看这个带注释的源示例,在该示例中,它们被本地存储替代项覆盖 基本上,Backbone.sync应该是一个

  • 问题内容: 我创建了一个自定义样式表,该样式表将覆盖Wordpress模板的原始CSS。但是,在我的日历页面上,原始CSS具有声明的每个表格单元格的高度: 有什么办法可以覆盖这个吗? 问题答案: 覆盖!important修饰符 只需使用添加另一个CSS规则,并赋予选择器更高的特异性(向选择器添加其他标签,id或类) 在比现有选择器晚的位置添加具有相同选择器的CSS规则(平局中,最后一个定义的获胜者

  • 问题内容: 我的模型有很多布尔字段。我将它们分为3组,将其渲染为。 现在,我需要将此数据保存回数据库。即,我需要将单个小部件返回的数据拆分为多个布尔列。我认为这适合该方法,不是吗? 问题是,我该怎么做?像这样吗 如果是这样,如何设置值? 或者其他的东西?所有数据都存储在哪里? 问题答案: 你要存储数据的位置是新模型实例:

  • 安装应用程序时,如何默认启用屏幕覆盖权限。 现在我面临一些问题,当捕获图像询问运行时权限时,一些设备不允许它打开屏幕覆盖设置对话框的权限。在用户看来,他们不知道为什么对话框显示以及他们做了什么。 当打开覆盖设置屏幕时,一些应用程序会自动启用屏幕覆盖权限。 下面我使用代码。 此代码直接打开覆盖设置屏幕。所有应用程序的显示列表。 我的要求是显示权限特定的应用程序或启用覆盖权限而无需用户交互。 做需要.

  • 问题内容: 我有一个愚蠢的困惑,当我们重写父类方法时,此派生的重写方法是否仍保留父类方法的代码,或者这是我们可以定义的新方法? 问题答案: 阅读本文以使概念更清晰。http://docs.oracle.com/javase/tutorial/java/IandI/override.html 通常,当我们想要扩展超类的方法或想要更改完整的逻辑时,我们就会这样做。 例如: 超类具有使用冒泡排序的排序方

  • 问题内容: 我正在尝试从open jdk更改某些类,所以我正在创建与open jdk类相同的包结构,并且正在使用netbeans更改类。当我在构建项目时,如果覆盖类中出现问题,我会收到错误消息。如果成功构建了我的项目,则应用程序似乎不考虑我对类的更改,而是使用打开的jdk类。知道我该如何使用我的类而不是openjdk的类? 例: 如果我在项目中创建类 _sun.net.www.protocol.h