创建频道后如何获取频道ID

时间:2020-04-28 19:56:30

标签: java discord discord-jda

我正在创建一个制作临时频道的漫游器,但我遇到了问题,直接创建频道并将其分配给变量后,如何获取该频道的ID?

这是我的代码:

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 个答案:

答案 0 :(得分:1)

由于queue()是异步操作,因此您必须使用回调

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

请参见javadocwiki

答案 1 :(得分:0)

之后,您可以使用以下类别方法浏览已创建频道的列表:

{{1}}

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

尽管如前所述,您不能保证已经创建了这些通道,因为queue是一种异步方法。