【发布时间】:2020-09-18 02:46:55
【问题描述】:
我希望我的机器人创建五个角色并在特定位置以特定方式对它们进行排序。
因此,我正在遍历名称列表并相应地创建角色。 (这不是我的实际代码,但背后的想法是一样的。)
for (String name : roleNames) {
event.getGuild().createRole().setColor(color).setName(name).queue(role -> {
role.getGuild().modifyRolePositions().selectPosition(role.getPosition()).moveTo(role.getGuild().getRoles().size()-8).queue()});
}
为了澄清问题,我尝试通过选择角色的初始位置role.getPosition() 并将其移动到特定位置role.getGuild().getRoles().size()-8 来移动角色。
由于列表中最高角色的位置等于角色数量,因此创建的每个角色都应移动到完全相同的位置,从而将其下方的每个角色移动一个位置。
但这不是正在发生的事情。
在执行这些代码行并减慢进程时(通过使用Thread.sleep 和/或.queueAfter()),我见证了以下情况:
- 第一个角色在底部创建。一切都很好。
- 第一个角色移动到指定位置。有效。
- 像往常一样在底部创建第二个角色。
- 当第二个角色上移到该位置时,它会将第一个角色下移到创建它的位置(底部)。
在创建每个角色之前都可以看到此行为。 最后一个角色停留在它所属的位置(因为没有其他角色切换其位置)。
我的代码中是否存在逻辑问题,我这样做的方式是错误的解决方案还是这只是一个不和谐的问题?我该如何解决这种行为?
如果您怀疑这在我的代码中根深蒂固,请告诉我,因为我可以为您提供更多详细信息。
【问题讨论】:
标签: discord discord-jda