Я создаю бота 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();
вместо использования менеджера.