Как добавить пользователя на канал в JDA?

Я создаю бота Discord, используя JDA в последней версии, и хочу, чтобы были созданы каналы, и когда кто-то упоминается на канале, добавляйте их, чтобы они могли просматривать канал. Кто-нибудь знает, как это сделать?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
3 988
1
Перейти к ответу Данный вопрос помечен как решенный

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

Другие вопросы по теме