【发布时间】:2019-08-28 18:25:41
【问题描述】:
我正在使用最新版本的 JDA 创建 Discord 机器人,并希望创建频道,当频道中提到某人时,将其添加,以便他们查看频道。有谁知道如何解决这个问题?
【问题讨论】:
标签: java discord-jda
我正在使用最新版本的 JDA 创建 Discord 机器人,并希望创建频道,当频道中提到某人时,将其添加,以便他们查看频道。有谁知道如何解决这个问题?
【问题讨论】:
标签: java discord-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。您可以使用它来确定是创建还是修改。
这在 JDA v4 中有所不同,其中 Channel 已重命名为 GuildChannel。
在那个版本中,您可以简单地调用channel.upsertPermissionOverride(member).grant(Permission.VIEW_CHANNEL).queue(); 而不是使用管理器。
【讨论】: