我正在使用最新版本的JDA创建Discord机器人,并希望创建频道,并且当频道中提到某人时,请添加频道,以便他们可以查看频道。有人知道该怎么做吗?
答案 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();
而不是使用管理器。