首页 > 解决方案 > 如何在 JDA 中将用户添加到频道?

问题描述

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

标签: javadiscord-jda

解决方案


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

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)将简单地返回null。您可以使用它来确定是创建还是修改.


这在Channel已重命名为GuildChannel.

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


推荐阅读