JDA 如何添加用户到频道?

How to add a user to a channel in JDA?

我正在使用最新版本的 JDA 创建一个 Discord 机器人,并希望创建频道,当有人在频道中被提及时,添加他们以便他们可以查看频道。有人知道解决这个问题的方法吗?

要允许人们查看频道,您必须为该用户创建权限覆盖。

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.getMentionedUsers().

如果用户在频道上已有覆盖,您必须通过 channel.getPermissionOverride(member) 检索它并通过管理器进行修改。

PermissionOverride override = channel.getPermissionOverride(member);
override.getManager().grant(Permission.VIEW_CHANNEL).queue();

如果不存在覆盖,getPermissionOverride(member) 将简单地 return null。您可以使用它来确定是 create 还是 modify.


这在 JDA v4 中有所不同,其中 Channel 已重命名为 GuildChannel

在该版本中,您可以简单地调用 channel.upsertPermissionOverride(member).grant(Permission.VIEW_CHANNEL).queue(); 而不是使用管理器。