Skip to main content
Гайды
ГайдыRolesBasics

Роли и права в Discord: почему твой бот не может выдать эту роль

Иерархия ролей самая частая причина, по которой в Discord что-то не работает. Разберись в ней один раз и сэкономь часы поиска ошибки.

Опубликовано автор AlphaCloud3 мин чтения

Есть ситуация, в которую рано или поздно попадает каждый владелец сервера: бот должен выдать роль и не выдаёт. У бота есть Администратор. Настройка сохранена. И всё равно ничего не происходит.

Причина почти всегда одна и та же, и к правам она отношения не имеет.

Две системы, а не одна

Discord в два отдельных шага решает, может ли кто-то что-то сделать:

  1. Право. Может ли эта роль вообще управлять ролями?
  2. Позиция. Стоит ли эта роль достаточно высоко, чтобы трогать целевую роль?

Большинство знает только первый шаг. Ломается всё на втором.

Правило в одном предложении

Участник, включая бота, может выдавать и снимать только роли, которые стоят ниже его собственной самой высокой роли. И модерировать он может только участников, чья самая высокая роль стоит ниже его собственной.

Это действует даже с правом Администратор. Администратор перекрывает права, но не иерархию. Бот с правом Администратор, чья роль стоит в самом низу списка, по сути не может ничего.

Пример

Твой список ролей сверху вниз выглядит так:

Owner
Administrator
Moderator
AlphaCloud          <- the bot's role
Verified
Member

Что бот может:

  • Выдавать и снимать Verified и Member
  • Модерировать участников, чья самая высокая роль Verified или Member

Что бот не может:

  • Выдать Moderator, потому что эта роль стоит выше него
  • Кикнуть, забанить или переименовать модератора
  • Трогать администратора

Если ты хочешь, чтобы бот мог выдавать роль модератора, нужно перетащить его роль выше Moderator. Не наоборот.

Практический совет

Поставь роль бота сразу под самой высокой ролью команды. Вот так:

Owner
Administrator
AlphaCloud          <- here
Moderator
Verified
Member

Так бот может управлять всем, что ниже руководства, но не может трогать само руководство. Почти всегда это именно то, что нужно.

Порядок меняется в разделе Настройки сервера, Роли перетаскиванием.

Три особых случая, которые всё равно не сработают

Даже при идеальной иерархии есть три вещи, которые Discord никогда не позволяет боту:

Переименовывать или модерировать владельца сервера. Владелец стоит вне иерархии. Никакая роль и никакое право этого не меняют.

Редактировать роли на той же позиции. Две роли на одной высоте не могут трогать друг друга. Нужно стоять действительно выше, а не наравне.

Выдавать роль @everyone. Она есть у всех автоматически, её нельзя выдать.

Права канала важнее прав сервера

Второй по частоте случай: по своей роли бот может отправлять сообщения, но именно в одном канале не отправляет.

Discord позволяет делать исключения из прав сервера для отдельных каналов. Если в канале Отправлять сообщения явно запрещено для @everyone или для одной из ролей бота, это побеждает, что бы ни говорила роль на сервере.

Это можно проверить напрямую: настройки канала, Права доступа, а затем вверху выбрать бота в Просмотр прав для. Discord покажет, что именно он может делать в этом канале.

Какое право для чего

Если не хочешь выдавать боту Администратора целиком, вот реалистичный список:

Задача Право
Выдавать роли Управлять ролями
Тикеты, временные каналы Управлять каналами
Удалять спам Управлять сообщениями
Заглушать Отправлять участников подумать о своём поведении
Удалять с сервера Выгонять участников, Банить участников
Перемещать в AFK-канал Перемещать участников
Префиксы в никах Управлять никнеймами
Знать, кто запустил действие Просматривать журнал аудита

Администратор всё равно остаётся прагматичным выбором, если ты используешь много функций. Не потому, что так безопаснее, а потому, что иначе каждая новая функция отправит тебя искать то одно недостающее право. В любом случае главным рычагом остаётся иерархия.

Короткая версия для поиска ошибок

Если что-то не работает, пройди эти четыре вопроса по порядку:

  1. Стоит ли роль бота выше нужной роли?
  2. Стоит ли роль бота выше нужного участника?
  3. Есть ли у бота соответствующее право на уровне сервера?
  4. Не запрещено ли это право явно в этом канале?

В девяти случаях из десяти дело в вопросе 1 или 2.

Другие статьи