dv8tion不和谐的Java通道权限

时间:2020-04-27 02:31:06

标签: java permissions bots discord discord-jda

我使用java.net.dv8tion.jda来管理该机器人,从而使Java成为不和谐的机器人。 我已经确定,当新用户进入漫游器时,该漫游器将向他发送私人消息,问题是某些用户已禁用了从漫游器或不在好友列表用户中接收隐性消息的选项。 因此,我的想法是采用一种新的方式,当新用户加入服务器时,机器人将创建一个新的文本通道,例如“ welcome”,在该通道中,所有人角色没有有权查看该频道,但是新用户有权查看该频道。在这种情况下,将是一个专用频道,例如,在用户阅读规则并通过键入“!name example”来选择名称之后,该私人频道将被删除。

我唯一的问题是我已经做了大量研究,我确实找到了如何使用bot修改特定角色的权限,但是我不了解如何在文本通道中修改权限。

我设法创建了一个新频道: event.getGuild().createTextChannel("welcome").complete(); 这将创建一个名为welcome的新文本通道。

我所看到的一些研究 event.getGuild().createTextChannel("welcome").complete().getManager().putPermissionOverride(permHolder, allow, deny);

但仍然不确定参数是什么,“ permHolder”是一个IPermissionHolder接口,具有Member和Role子接口,所以我假设

event.getGuild().createTextChannel("welcome").complete().getManager().putPermissionOverride(event.getMember(), allow, deny);用于修改该频道上的新用户权限(事件为OnGuildMemberJoin)

event.getGuild().createTextChannel("welcome").complete().getManager().putPermissionOverride(event.getGuild().getRoleById(*everyone role id*), allow, deny);用于修改该频道上的所有人角色权限

PS:是的,我知道以这种方式它将创建两个名为“ welcome”的不同通道,我应该首先创建该通道,将其分配给变量,然后再对其进行处理,但这只是出于理解目的在这里。

但是我仍然不知道allow和deny参数是什么,它们是我要被允许的权限列表还是我想被拒绝的权限列表?在Eclypse上,它们显示为长型。如果是的话,我该如何计算它们?

对不起,如果我写的内容可能令人困惑,请先谢谢您。

2 个答案:

答案 0 :(得分:2)

经过一些研究得出结论,我已经解决了这个问题

TextChannel canaleNuovo=event.getGuild().createTextChannel("welcome").complete();

canaleNuovo.getManager().getChannel().createPermissionOverride(event.getMember()).setAllow(Permission.VIEW_CHANNEL).queue();

canaleNuovo.getManager().getChannel().createPermissionOverride(event.getGuild().getRoleById("640568816702587041")).setDeny(Permission.VIEW_CHANNEL).queue();

它有效!

答案 1 :(得分:2)

您可以修改javaee.github.io/javaee-spec/javadocs返回的ChannelAction的权限。 addPermissionOverride方法允许为成员和角色添加替代。

createTextChannel