#python #discord.py
Вопрос:
Я пытаюсь создать команду, которую могут использовать только люди с определенной ролью. В настоящее время я использую:
if discord.utils.get(message.author.roles, name="Admin").name == "Admin":
#do stuff here
это работает, но если у пользователя нет этой роли, а
Ошибка атрибута: объект «Нетип» не имеет атрибута «имя»
возникает ошибка. Есть ли здесь какой-нибудь туземец discord.py функция, которую можно было бы использовать?
Я не горю желанием пытаться уловить проблему с исключениями
has_roles()
кажется, больше не существует
Комментарии:
1. »
has_roles()
кажется, больше не существует » — Вы уверены в этом? Что вы пробовали?2. Ну, я запустил поиск по api discordpy.readthedocs.io/en/stable/api.html и нет, это не показалось @Dominik
3. Просто чтобы убедиться: он все еще существует в документах
Ответ №1:
loa_in_ предоставил хороший метод, но вы также можете проверить его по-другому.
Взгляните на следующий код:
@client.command()
async def test(ctx):
role = discord.utils.get(ctx.guild.roles, name="Admin") # Get the role
if role in ctx.author.roles: # Check if the author has the role
await ctx.send("You can do this")
else:
await ctx.send("You do not have the `Admin` role.")
- Вы также можете вставить
id
вместо имени, поэтому вам не придется менять код каждый раз, когда меняется имя роли.
Ответ №2:
Сообщение об ошибке очень полезно здесь. Видимо get
, иногда возвращается None
.
role = discord.utils.get(message.author.roles, name="Admin")
if role is not None and role.name == "Admin":
#do stuff here