我正在创建一个制作临时频道的漫游器,但我遇到了问题,直接创建频道并将其分配给变量后,如何获取该频道的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();
}
}
答案 0 :(得分:1)
由于queue()
是异步操作,因此您必须使用回调
category.createVoiceChannel(name)
.addPermissionOverride(role, allowRole, denyRole)
.addPermissionOverride(member, allowMember, denyMember)
.queue(channel -> {
System.out.println("ID for voice channel: " + channel.getId());
});
答案 1 :(得分:0)
之后,您可以使用以下类别方法浏览已创建频道的列表:
{{1}}
尽管如前所述,您不能保证已经创建了这些通道,因为queue是一种异步方法。