Я создаю канал с помощью команды + упомнинанием от 1 и более участника сервер и хочу сделать его частным, и чтобы только определенные люди могли в Discord его видеть (включая упомянутых) и сам бот.
Имя чата должно быть как имя первого упомянутого участника.
Не удалось реализовать от 2 и более пользователей отмеченных. Пока получается добавлять статически, но хотелось бы динамически, чтобы сократить число строк, так же, возможно, брать данные из БД.
List<Permission> List = Arrays.asList(Permission.MESSAGE_READ, Permission.MESSAGE_WRITE);
String name = event.getMessage().getMentionedMembers().get(0).getEffectiveName().toLowerCase().replaceAll(" ", "");
event.getGuild().getCategoriesByName("Hall", true).get(0)
.createVoiceChannel(name)
.addPermissionOverride(event.getGuild().getPublicRole(), Collections.emptyList(), List)
.addPermissionOverride(event.getMessage().getMentionedMembers().get(0), List, Collections.emptyList())
.addPermissionOverride(event.getGuild().getRolesByName("Admin", true).get(0), List, Collections.emptyList())
.addPermissionOverride(event.getGuild().getRolesByName("Moderator", true).get(0), List, Collections.emptyList())
.addPermissionOverride(event.getGuild().getRolesByName("LPA", true).get(0), List, Collections.emptyList())
.addPermissionOverride(event.getGuild().getRolesByName("Tech", true).get(0), List, Collections.emptyList())
.addPermissionOverride(event.getGuild().getSelfMember(), List, Collections.emptyList())
.queue();
Ответ прост, но не очевиден.
Первые две строчки кода оставляем без изменений, а остальное удаляем и вставляем вначале это:
event.getGuild().getCategoriesByName("Hall", true).get(0).createTextChannel(name).queue();
Тут мы говорим, что создаем чат в категории Hall.Я пытался реализовать отдельно создание чата и отдельное добаление Persmissions, но Persmissions почему-то запускались раньше, поэтому для нужной нам последовательности прибегним к лямбдам.
пишем внутри переменную channel и дальше, если действий будет много, открываем фигурные скобки и добавляем следующие данные:
@everyone) просто пишем channel.putPermissionOverride(event.getGuild().getPublicRole()).setDeny(list).queue(); channel.putPermissionOverride(data.getGuild().getSelfMember()).setAllow(list).queue();List<Permission> list = Arrays.asList(Permission.MESSAGE_READ, Permission.MESSAGE_WRITE);
String name = data.getEvent().getMessage().getMentionedMembers().get(0).getEffectiveName().toLowerCase().replaceAll(" ", "");
event.getGuild().getCategoriesByName("Hall", true).get(0).createTextChannel(name).queue(
channel -> {
channel.putPermissionOverride(event.getGuild().getPublicRole()).setDeny(list).queue();
for (Member member : event.getMentionedMembers()) {
try {
channel.putPermissionOverride(member).setAllow(list).queue();
} catch (Exception ignore){}
}
for(Access access : new Database().getAccess("WHERE access_high=1")){
try {
channel.putPermissionOverride(data.getGuild().getRolesByName(access.getRole(), true).get(0)).setAllow(list).queue();
} catch (Exception ignore){}
}
channel.putPermissionOverride(data.getGuild().getSelfMember()).setAllow(list).queue();
}
);
Продвижение своими сайтами как стратегия роста и независимости