#python #discord #discord.py #roles
#python #Discord #discord.py #роли
Вопрос:
По сути, я пытаюсь создать бота, который дает пользователю определенную роль, когда пользователь отправляет DM с определенным ключевым словом боту в качестве DM. Ключевое слово stuff и все работает отлично. Сервер проанализирован правильно, но я думаю, что в какой-то момент я допустил ошибку при получении роли или добавлении роли. Вот конкретная часть моего кода, которая используется для роли:
server = client.get_guild(<my server id here>)
role = discord.utils.get(server.roles, name="Member")
await user.add_roles(ctx.message.author, role)
Комментарии:
1. Возникает ли какое-либо исключение? Добавьте try except в этот код, чтобы перехватить их.
Ответ №1:
У пользователя в DMs нет ролей, у члена гильдии есть роли, поэтому вам нужно получить участника с этим идентификатором пользователя для этого сервера.
Также метод add_roles принимает только роли, не являющиеся объектом пользователя / члена
server = client.get_guild(<your server id here>)
role = discord.utils.get(server.roles, name="Member")
member = server.get_member(user.id)
await member.add_roles(role)
Ответ №2:
Вам нужно извлечь member
объект, а не user
объект, поскольку user
объект не связан с гильдией.
server = client.get_guild(server_id)
role = discord.utils.get(server.roles, name="Member")
member = server.get_member(ctx.message.author.id)
await member.add_roles(role)
Комментарии:
1. Спасибо за ваш ответ. Я получил его, чтобы определенно получить нужного пользователя и сервер, но
add_roles
все еще не работает. Я не получил точную обратную трассировку, но ролей добавлено не было. Может быть, я не извлекаю правильную роль? В противном случае я не могу понять, почему возникают эти проблемы2. Извините, теперь мне удалось создать правильное исключение и я увидел, что у бота просто отсутствуют разрешения на сервере. Извините, что трачу ваше время, и большое спасибо вам, бот, за ваши очень полезные ответы. Merci Beacoup! 🙂