【问题标题】:How to get the id of the channel after creating it创建频道后如何获取频道ID
【发布时间】:2020-08-12 18:42:27
【问题描述】:

我正在创建一个制作临时频道的机器人,但我遇到了一个问题,在直接创建频道并将其分配给变量后如何获取频道的 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();
        }
    }

【问题讨论】:

  • 请在您的代码中使用变量。

标签: java discord discord-jda


【解决方案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

【讨论】:

    【解决方案2】:

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

        /**
     * 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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-26
      • 2021-05-04
      • 1970-01-01
      • 2021-02-06
      • 2019-12-14
      • 2021-05-24
      • 2020-11-26
      • 2021-10-28
      相关资源
      最近更新 更多