[英]TextChannel returning null after creation
當我創建一個文本通道並添加一個成員權限覆蓋然后嘗試在它創建返回 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);
感謝任何幫助謝謝
您正在使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.