Как получить идентификатор канала после его создания - PullRequest
0 голосов
/ 28 апреля 2020

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

это мой код :

public void onGuildVoiceJoin(GuildVoiceJoinEvent event) {

            if(event.getChannelJoined().getIdLong() == 703255821508673546L) {
            event.getGuild().getCategoryById("704418165710651492").createVoiceChannel("%s".format("channel" + event.getMember().getEffectiveName())).addPermissionOverride(event.getMember().getGuild().getPublicRole(), null, EnumSet.of(Permission.VOICE_CONNECT, Permission.VIEW_CHANNEL)).addMemberPermissionOverride(event.getMember().getIdLong(), EnumSet.of(Permission.MANAGE_CHANNEL, Permission.VOICE_CONNECT, Permission.MANAGE_PERMISSIONS, Permission.VOICE_MOVE_OTHERS), null).queue();
            event.getGuild().getCategoryById("704418165710651492").createTextChannel("%s".format("channel" + event.getMember().getEffectiveName())).queue();
        }
    }

Ответы [ 2 ]

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

Поскольку queue() является асинхронной c операцией, вы должны использовать обратный вызов

category.createVoiceChannel(name)
        .addPermissionOverride(role, allowRole, denyRole)
        .addPermissionOverride(member, allowMember, denyMember)
        .queue(channel -> {
            System.out.println("ID for voice channel: " + channel.getId());
        });

См. javado c и wiki .

0 голосов
/ 28 апреля 2020

После этого вы можете go просмотреть список созданных каналов, используя следующие методы категрии:

    /**
 * All {@link net.dv8tion.jda.api.entities.TextChannel TextChannels}
 * listed for this Category
 *
 * @return Immutable list of all child TextChannels
 */
@Nonnull
List<TextChannel> getTextChannels();

/**
 * All {@link net.dv8tion.jda.api.entities.VoiceChannel VoiceChannels}
 * listed for this Category
 *
 * @return Immutable list of all child VoiceChannels
 */
@Nonnull
List<VoiceChannel> getVoiceChannels();

https://github.com/DV8FromTheWorld/JDA/blob/master/src/main/java/net/dv8tion/jda/api/entities/Category.java

Хотя, как уже говорилось, вы не можете гарантировать, что эти каналы были созданы, поскольку очередь является асинхронным методом.

...