【问题标题】:TextChannel returning null after creationTextChannel 创建后返回 null
【发布时间】:2021-03-08 13:46:45
【问题描述】:

当我创建一个文本频道并添加一个 memberpermissionoverride 然后尝试在它创建它返回 null 的频道后获取它。

谁能指出我正确的方向?

无论如何,这是代码。

shinto.createTextChannel(p.getName() + "-verify").addMemberPermissionOverride(trueDiscordMember.getIdLong(), ticketPermissionsAllow, ticketPermissionsDeny).addMemberPermissionOverride(bot.getJDA().getSelfUser().getIdLong(), botAllow, Collections.emptyList()).queue();
                        
                        TextChannel channel = bot.getJDA().getTextChannelsByName(p.getName() + "-verify", true).get(0);

感谢您的帮助

【问题讨论】:

    标签: java discord discord-jda


    【解决方案1】:

    您正在使用queue,因此操作异步发生,但您试图立即获取TextChannel,所以基本上,您是在创建它之前尝试获取它。

    要解决这个问题,您可以执行以下两个示例:

    guild.createTextChannel("stuff" + "-verify").queue(textChannel -> {
        //DO STUFF
    });
    

    在此示例中,我使用RestAction#queue(Consumer),这意味着一旦操作完成,它将执行消费者(消费者参数将是创建的TextChannel),并且它将异步运行。在此示例中,您避免阻塞线程。


    TextChannel channel = guild.createTextChannel("stuff" + "-verify").complete();
    

    在本例中,我使用RestAction#complete(),这意味着它将返回通道并阻塞线程直到操作完成。


    在此处阅读有关 RestAction 的更多信息:https://ci.dv8tion.net/job/JDA/javadoc/net/dv8tion/jda/api/requests/RestAction.html

    【讨论】:

      猜你喜欢
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      相关资源
      最近更新 更多