1 回答
TA贡献1796条经验 获得超7个赞
要允许用户查看频道,您必须为该用户创建权限覆盖。
public static void addUserToChannel(Channel channel, User user) {
Guild guild = channel.getGuild();
Member member = guild.getMember(user);
channel.createPermissionOverride(member)
.setAllow(Permission.VIEW_CHANNEL)
.queue();
}
这将为特定用户创建权限覆盖,并允许他们查看频道。要从消息中获取提及的用户,您只需调用 message.get 提及用户()。
如果用户已经在通道上具有覆盖,则必须通过管理器检索它并对其进行修改。channel.getPermissionOverride(member)
PermissionOverride override = channel.getPermissionOverride(member);
override.getManager().grant(Permission.VIEW_CHANNEL).queue();
如果没有存在覆盖,则将直接返回 。您可以使用它来确定是创建还是修改。getPermissionOverride(member)null
这在 JDA v4 中略有不同,其中已重命名为 。ChannelGuildChannel
在该版本中,您可以简单地调用而不是使用管理器。channel.upsertPermissionOverride(member).grant(Permission.VIEW_CHANNEL).queue();
添加回答
举报