Я хочу, чтобы мой бот создал пять ролей и определенным образом упорядочил их на определенной должности.
Поэтому я просматриваю список имен и соответственно создаю роли. (Это не мой настоящий код, но идея та же.)
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()
) я наблюдал следующее:
- Первая роль создается внизу. Все отлично.
- Первая роль перемещается в предназначенное место. Работает.
- Вторая роль создается как обычно внизу.
- Когда вторая роль перемещается на позицию, она перемещает первую роль туда, где она была создана (внизу).
Такое поведение можно увидеть, пока не будут созданы все роли. Последняя роль остается на своем месте (поскольку никакая другая роль не меняет своего положения).
Есть ли в моем коде логическая проблема, мой способ сделать это неправильное решение или это просто проблема разногласий? Как я могу обойти это поведение?
Если вы подозреваете, что это более глубоко укоренилось в моем коде, дайте мне знать, для этого я могу предоставить вам более подробную информацию.