如何在JDA中将用户添加到频道?

时间:2019-04-07 13:02:04

标签: java discord-jda

我正在使用最新版本的JDA创建Discord机器人,并希望创建频道,并且当频道中提到某人时,请添加频道,以便他们可以查看频道。有人知道该怎么做吗?

1 个答案:

答案 0 :(得分:1)

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

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。您可以使用它来确定是创建还是修改


此操作在JDA v4中有所不同,在JDA v4中,Channel已重命名为GuildChannel

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