Как добавить пользователя в канал в JDA?
Я создаю бота Discord с использованием JDA в последней версии и хочу, чтобы каналы были созданы, и когда кто-то упоминается в канале, добавьте их, чтобы они могли просматривать канал. Кто-нибудь знает способ пойти по этому поводу?
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, где Channel
был переименован в GuildChannel
,
В этой версии вы можете просто позвонить channel.upsertPermissionOverride(member).grant(Permission.VIEW_CHANNEL).queue();
вместо использования менеджера.