Выдача роли по команде
Писал команду для того, что бы юзер, который ее прописал получил роль, но почему то роль она не добавляет, но при этом Embed выходит в чат :).
Код:
@client.command()
async def news(ctx):
role = discord.utils.get( ctx.guild.roles,id=738095317181923349 )
await discord.Member.add_roles(role)
await ctx.send(embed = discord.Embed(description = f'**Вы взяли себе роль {role.mention}**', color=discord.Color.purple()))
В консоль никакой ошибки не выходит
Ответы (2 шт):
Автор решения: onlikerop
→ Ссылка
Попробуйте использовать функцию discord.guild.get_role(738095317181923349)
Автор решения: Fixator10
→ Ссылка
discord.Member - класс, а не объект.
Для добавления роли участнику, Вам нужен его объект. В вашем случае, вы можете его достать из объекта контекста который передаётся в функцию команды первым аргументом (ctx).
@client.command()
async def news(ctx):
role = ctx.guild.get_role(
738095317181923349
) # для получения объектов по ID лучше использовать get_-функции, они лучше воспринимаются при чтении кода
await ctx.author.add_roles(role)
await ctx.send(
embed=discord.Embed(
description=f"**Вы взяли себе роль {role.mention}**",
color=discord.Color.purple(),
)
)