📜  discord jda 从频道中删除 @everyone - Java (1)

📅  最后修改于: 2023-12-03 14:40:44.425000             🧑  作者: Mango

Discord JDA 从频道中删除 @everyone - Java

在 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 的方法。通过对访问控制列表的修改,可以方便地控制频道的访问权限。