DV8tion Discord java канал разрешений - PullRequest
0 голосов
/ 27 апреля 2020

Я создал бота для разногласий, используя java, используя net .dv8tion.jda для управления ботом. Я сделал так, что когда новый пользователь входит в бот отправит ему личное сообщение, проблема в том, что некоторые пользователи отключили возможность получать сообщения от ботов или от не в списке друзей. Поэтому моя идея состояла в том, чтобы сделать это по-новому, когда новый пользователь присоединяется к серверу, бот создаст новый текстовый канал, называемый, например, "welcome", в этом канале роль Everyone не имеет разрешение на просмотр канала, но у нового пользователя есть разрешение на его просмотр. В этом случае будет частный канал, который будет удален, например, после того, как пользователь прочитает правила и выберет имя, набрав «! Name example».

Моя единственная проблема в том, что я провел много исследований , я нашел, как изменить разрешения для определенных c ролей с помощью бота, но я не понимаю, как изменить разрешения в текстовых каналах.

Мне удалось создать новый канал: event.getGuild().createTextChannel("welcome").complete(); и это создает новый текстовый канал с именем welcome.

При некоторых исследованиях, которые я видел event.getGuild().createTextChannel("welcome").complete().getManager().putPermissionOverride(permHolder, allow, deny);

, но все еще не уверен, каковы параметры, «permHolder» является интерфейсом IPermissionHolder, который имеет подинтерфейс Member and Role, поэтому я предполагаю

event.getGuild().createTextChannel("welcome").complete().getManager().putPermissionOverride(event.getMember(), allow, deny); для изменения прав нового пользователя на этом канале (событие OnGuildMemberJoin)

и

event.getGuild().createTextChannel("welcome").complete().getManager().putPermissionOverride(event.getGuild().getRoleById(*everyone role id*), allow, deny); для изменение разрешения для всех ролей на этом канале

PS: да, я знаю, что таким образом будут созданы 2 разных канала, которые называются оба "добро пожаловать", я должен сначала запустил канал, назначил его переменной и затем поработал над ним, но здесь просто для понимания цели.

Но я до сих пор не знаю, что такое разрешающие и запрещающие параметры, являются ли они список разрешений, которые я хочу получить, и те, которые я хочу отказать? На Eclypse они показаны как длинные типы. И если да, то как мне их рассчитать?

Извините, если написанное может сбить с толку, и заранее благодарю.

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Вы можете изменить разрешения для ChannelAction, возвращаемого createTextChannel. Метод addPermissionOverride позволяет добавлять переопределения для участников и ролей.

event.getGuild().createTextChannel("welcome")
    .addPermissionOverride(event.getMember(), EnumSet.of(Permission.VIEW_CHANNEL), null)
    .addPermissionOverride(role, null, EnumSet.of(Permission.VIEW_CHANNEL))
    .queue();
0 голосов
/ 27 апреля 2020

Я решил проблему, после некоторого исследования я пришел к выводу

TextChannel canaleNuovo=event.getGuild().createTextChannel("welcome").complete();

canaleNuovo.getManager().getChannel().createPermissionOverride(event.getMember()).setAllow(Permission.VIEW_CHANNEL).queue();

canaleNuovo.getManager().getChannel().createPermissionOverride(event.getGuild().getRoleById("640568816702587041")).setDeny(Permission.VIEW_CHANNEL).queue();

И это работает!

...