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();
而不是使用管理器。
我正在使用最新版本的 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();
而不是使用管理器。