java - TextChannel 创建后返回 null
问题描述
当我创建一个文本通道并添加一个 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);
感谢任何帮助谢谢
解决方案
您正在使用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
推荐阅读
- python - Cython 字符串支持
- java - Java 8 中无法替换字符串的空白字符
- azure - 创建外部数据源 Azure SQL
- botframework - Skype for Business 混合环境的机器人设置
- html - 有没有办法在不需要遵循xml结构的情况下在html中转换xml?
- javascript - 获取 Javascript 中所有可能的 l33t 组合的数组
- php - 如何将文件上传到与文件同名的 Dropbox
- react-native - 如何从 React Native Sensors 中的加速度计值中减去重力
- php - 从 PHP 中的多部分/混合 POST 访问文件
- angular - 角度测试:为什么要在提供者中测试组件?