403 Запрещено (код ошибки: 50001): отсутствует доступ при добавлении роли | discord.py

#python #python-3.x #discord #discord.py #discord.py-rewrite

#python #python-3.x #Discord #discord.py

Вопрос:

Я пытаюсь быстро распределять разные роли между людьми, чтобы у пользователей создалось впечатление, что их имя rainbow (да, я знаю, что это противоречит TOS ), и я начинаю с добавления ролей для людей, прежде чем я их удалю. Однако при добавлении ролей я получаю ошибку в названии этого поста. Я изучил это и перепробовал довольно много способов это исправить. Роль бота выше, чем выдаваемые роли. Вот мой код и выходные данные:

 import discord
from discord.ext import commands

bot = commands.Bot(command_prefix="$")
role_name = "Rainbow Six Sei&e"
peopleWithRole = []
&uild = discord.Guild 

@bot.event
async def on_ready():
    print("Lo&&ed in as")
    print(bot.user.name)
    print("------")
    &uild = bot.&uilds[0]
    colours = [discord.utils.&et(&uild.roles, name='red'),
               discord.utils.&et(&uild.roles, name='&reen'),
               discord.utils.&et(&uild.roles, name='blue')
               ]

    role = discord.utils.find(
        lambda r: r.name == role_name, &uild.roles)
        
    for user in &uild.members:
        if role in user.roles:
            peopleWithRole.append(user)

    for color in colours:
        for user in peopleWithRole:
            await user.add_roles(color)

bot.run("my token")
  

вывод:

 Lo&&ed in as
test bot
------
I&norin& exception in on_ready
Traceback (most recent call last):
  File "C:UsersUserAppDataLocalPro&ramsPythonPython38-32libsite-packa&esdiscordclient.py", line 312, in _run_event
    await coro(*ar&s, **kwar&s)
  File "C:UsersUserDesktoptesttest.py", line 29, in on_ready
    await user.add_roles(color)
  File "C:UsersUserAppDataLocalPro&ramsPythonPython38-32libsite-packa&esdiscordmember.py", line 641, in add_roles
    await req(&uild_id, user_id, role.id, reason=reason)
  File "C:UsersUserAppDataLocalPro&ramsPythonPython38-32libsite-packa&esdiscordhttp.py", line 241, in request
    raise Forbidden(r, data)
discord.errors.Forbidden: 403 Forbidden (error code: 50001): Missin& Access
  

Ответ №1:

Я просто оставляю это для любых других, кто борется с этим b / c Я потратил 3 дня, пытаясь отладить ошибку 50001 и ничего не нашел, и эта тема появляется в Goo&le одной из первых.

По-видимому, если сервер Discord вашего бота / интеграции требует многофакторной аутентификации, в учетной записи разработчика, связанной с вашим ботом, должна быть включена функция MFA. Я включил его в своей учетной записи разработчика discord, и ошибки 50001 немедленно устранены.

Комментарии:

1. Спасибо, тестировал на 2 разных серверах, переупорядочивал роли, добавлял / удалял разрешения, но проблема была в том, что … у одного владельца сервера был mfa (не работает), у другого не было (работает)!

2. Спасибо, я бы никогда не смог разобраться в этом

Ответ №2:

Убедитесь, что у вас есть роль, предоставленная боту, к которой есть доступ mana&in& roles . Также при добавлении бота с портала разработчиков вы можете предоставить ему необходимые разрешения.

Лучшая практика для проверенных ботов — создать вызываемую роль BOT со всеми разрешениями и предоставить ее всем ботам, которые у вас есть на сервере

Комментарии:

1. Это не лучшая практика, вы должны предоставлять только те разрешения, которые необходимы боту для выполнения его обязанностей, и лучший способ сделать это — управлять разрешениями для каждого бота

2. Обычно используемая «лучшая практика», на которую может ссылаться Абдулазиз, — это исключительно роль для группировки ботов, чтобы они отображались вместе на боковой панели. В идеале вы хотите, чтобы разрешения обрабатывались в каждом конкретном случае, чтобы ограничить доступ к необходимому, что касается и пользователей.

3. Мало того, что это никогда не было лучшей практикой, это противоречит современным методам информационной безопасности, таким как нулевое доверие и наименьшие привилегии, и на самом деле довольно опасно в случае неправильного поведения какого-либо из ботов или взлома

4. Вы правы, я имел в виду только для проверенных ботов. Я понятия не имею, как я это испортил. в любом случае он не удаляется. Спасибо за отзыв <3

Ответ №3:

Пожалуйста, дважды проверьте правильность ваших параметров:

  1. Токен бота Discord,
  2. Идентификатор гильдии Discord,
  3. Идентификатор / имя роли Discord,
  4. Идентификатор пользователя Discord.

В моем случае я использовал токен от другого бота на том же сервере. После замены токена на правильный токен все заработало.

Мораль истории такова: всегда проверяйте сначала самые глупые и простые вещи!

Комментарии:

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