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

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