当我创建一个文本频道并添加一个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);
谢谢你的帮助
1条答案
按热度按时间wnrlj8wa1#
你用的是
queue
所以这个动作是异步发生的,但是你试图得到TextChannel
很快,基本上,你要在它被创建之前得到它。要解决这个问题,您可以执行以下两个示例之一:
在这个例子中,我使用
RestAction#queue(Consumer)
这意味着它将执行consumer(consumer参数将是TextChannel
一旦操作完成,它将异步运行。在本例中,避免阻塞线程。在这个例子中,我使用
RestAction#complete()
这意味着它将返回通道并阻塞线程,直到操作完成。在此处阅读有关restaction的更多信息:https://ci.dv8tion.net/job/jda/javadoc/net/dv8tion/jda/api/requests/restaction.html