📅  最后修改于: 2023-12-03 14:40:44.425000             🧑  作者: Mango
在 Discord JDA(Java Discord API)中,有时候我们需要从频道中删除所有人。在 Discord 中,可以使用 @everyone 标记来提及所有人。因此,删除 @everyone 就是删除频道中所有人的提及。
为了解决这个问题,JDA API 提供了 GuildChannelManager#putPermissionOverride()
和 GuildChannelManager#removePermissionOverride()
两个方法,可以对频道的权限进行修改。我们可以使用 putPermissionOverride()
将 @everyone 从频道的访问控制列表中移除。
下面是代码示例:
Guild guild = channel.getGuild();
Role everyone = guild.getPublicRole();
channel.getManager().putPermissionOverride(everyone).deny(Permission.MESSAGE_WRITE).queue();
在这个示例中,我们先获取了频道所属的服务器 Guild
对象,然后使用 getPublicRole()
方法获取服务器中的 @everyone 角色。接着,我们调用频道的 getManager()
方法获取频道管理器,并对 @everyone 角色进行了权限覆盖操作。我们调用 deny()
方法将 @everyone 的 MESSAGE_WRITE
权限设置为拒绝(即从访问控制列表中移除 @everyone)。
如果要将 @everyone 重新添加到频道中,可以使用 removePermissionOverride()
方法:
Guild guild = channel.getGuild();
Role everyone = guild.getPublicRole();
channel.getManager().removePermissionOverride(everyone).queue();
在这个示例中,我们使用 removePermissionOverride()
方法将 @everyone 从访问控制列表中移除,这样 @everyone 就可以重新访问频道了。
以上就是使用 Discord JDA 从频道中删除 @everyone 的方法。通过对访问控制列表的修改,可以方便地控制频道的访问权限。