Discord 移动角色可以切换它们
我希望我的机器人创建五个角色,并在特定的位置以特定的方式对它们进行排序 因此,我将循环浏览一个名称列表,并相应地创建角色。(这不是我的实际代码,但背后的想法是一样的。) 为了澄清问题,我尝试移动角色,方法是选择其初始位置Discord 移动角色可以切换它们,discord,discord-jda,Discord,Discord Jda,我希望我的机器人创建五个角色,并在特定的位置以特定的方式对它们进行排序 因此,我将循环浏览一个名称列表,并相应地创建角色。(这不是我的实际代码,但背后的想法是一样的。) 为了澄清问题,我尝试移动角色,方法是选择其初始位置role.getPosition(),然后将其移动到特定位置role.getGuild().getRoles().size()-8 由于列表中最高角色的位置等于角色的数量,因此创建的每个角色都应移动到完全相同的位置,从而将其下方的每个角色移动到较低的位置 但事实并非如此 当执行这
role.getPosition()
,然后将其移动到特定位置role.getGuild().getRoles().size()-8
由于列表中最高角色的位置等于角色的数量,因此创建的每个角色都应移动到完全相同的位置,从而将其下方的每个角色移动到较低的位置
但事实并非如此
当执行这些代码行并减慢进程时(通过使用Thread.sleep
和/或.queueAfter()
),我目睹了以下情况:
如果您怀疑这在我的代码中根深蒂固,请告诉我,因为我可以向您提供更多详细信息。ModifyRolePosition使用缓存版本的角色 一次只更改一个位置会导致每次都修改相同的缓存版本,从而导致更改不会继续进行
这就是为什么一次调用可以进行多个操作的原因,只需将多个
.selectPosition(initialPosition).moveTo(newPosition)
一起排队,并在最后调用.queue()
一次即可。ModifyRolePosition使用缓存版本的角色
一次只更改一个位置会导致每次都修改相同的缓存版本,从而导致更改不会继续进行
这就是为什么一次调用可以进行多个操作的原因,只需将多个.selectPosition(initialPosition).moveTo(newPosition)
一起排队,并在最后调用.queue()
一次即可
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()});
}