java - dv8tion 不和谐 java channel 权限

标签 java permissions bots discord discord-jda

我使用java制作了一个discord机器人,使用net.dv8tion.jda来管理机器人。 我已经做到,当新用户进入机器人时,机器人会向他发送私有(private)消息,问题是某些用户已禁用从机器人或不在 friend 列表中的用户接收消息的选项。 所以我的想法是以一种新的方式实现,当新用户加入服务器时,机器人将创建一个新的文本 channel ,例如名为“欢迎”,在该 channel 中每个人角色都没有没有查看该 channel 的权限,但新用户有查看该 channel 的权限。在这种情况下,私有(private) channel 将被删除,例如用户阅读规则并通过键入“!name example”选择名称。

我唯一的问题是我做了很多研究,我确实找到了如何使用机器人修改特定角色的权限,但我不明白如何修改文本 channel 中的权限。

我已经成功创建了一个新 channel : event.getGuild().createTextChannel("欢迎").complete(); 这将创建一个名为welcome的新文本 channel 。

我看过一些研究 event.getGuild().createTextChannel("欢迎").complete().getManager().putPermissionOverride(permHolder, 允许, 拒绝);

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

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

event.getGuild().createTextChannel("欢迎").complete().getManager().putPermissionOverride(event.getGuild().getRoleById(*每个人角色id*),允许,拒绝); 用于修改该 channel 上的每个人角色权限

PS:是的,我知道这样会创建两个不同的 channel ,名称均为“欢迎”,我应该首先创建 channel ,将其分配给一个变量,然后再对其进行处理,但这只是为了理解目的在这里。

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

很抱歉,如果我写的内容可能令人困惑,并提前感谢您。

最佳答案

您可以修改 ChannelAction 的权限由createTextChannel返回。 addPermissionOverride方法允许添加成员和角色的覆盖。

event.getGuild().createTextChannel("welcome")
    .addPermissionOverride(event.getMember(), EnumSet.of(Permission.VIEW_CHANNEL), null)
    .addPermissionOverride(role, null, EnumSet.of(Permission.VIEW_CHANNEL))
    .queue();

关于java - dv8tion 不和谐 java channel 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61450832/

相关文章:

javascript - 网站如何检测 --remote-debugging-port chrome 开关

javascript - 保留 if 语句中对变量的更改

java - 登录 JUnit 测试用例

java - 为什么 getFraction1 和 getFraction2 方法没有正确设置这些变量的值?

permissions - CRM 2011 OnPremise - 注释/注释权限

python - 如果消息是回复,机器人应该获取用户的 ID

JAVA 8没有jrunscript,只有jjs

java - 安卓、root、白名单

docker - 使用 linux 和 win 提取非 root 命名卷权限的工作方法

c# - 在ASP.NET中,使用什么来管理角色和分配给角色的权限?