我已经使用 java 制作了一个不和谐的机器人,使用 net.dv8tion.jda 来管理机器人。我已经说过,当新用户进入机器人时,会向他发送私人消息,问题是一些用户禁用了从机器人或不在朋友列表中的用户接收消息的选项。所以我的想法是以一种新的方式实现它,当一个新用户加入服务器时,机器人将创建一个新的文本频道,例如“欢迎”,在那个频道中,每个人的角色都没有看到频道的权限,但新用户有权查看它。在这种情况下,私人频道将在例如用户阅读规则并通过键入“!名称示例”来选择名称后被删除。
我唯一的问题是我做了很多研究,我确实找到了如何使用机器人修改特定角色的权限,但我不明白如何修改文本通道中的权限。
我设法创建了一个新频道:
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:是的,我知道这样会创建两个名为“欢迎”的不同频道,我应该首先创建频道,将其分配给一个变量并在之后处理它,但这只是为了理解这里的目的。
但是我仍然不知道什么是允许和拒绝参数,它们是我想要被允许的权限列表以及我想要被拒绝的权限列表吗?在 Eclypse 上,它们显示为长类型。如果是,我该如何计算它们?
抱歉,如果我写的内容可能令人困惑,请提前感谢您。