#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:
Пожалуйста, дважды проверьте правильность ваших параметров:
- Токен бота Discord,
- Идентификатор гильдии Discord,
- Идентификатор / имя роли Discord,
- Идентификатор пользователя Discord.
В моем случае я использовал токен от другого бота на том же сервере. После замены токена на правильный токен все заработало.
Мораль истории такова: всегда проверяйте сначала самые глупые и простые вещи!
Комментарии:
1. Простой способ выяснить, что вы используете неправильный токен, — это посмотреть на панель участников справа на вашем сервере Discord: если бот отображается в автономном режиме, возможно, у вас та же проблема, что и у меня.