Добавить роль в discord.py

#python #discord.py

Вопрос:

Я пробовал много разных методов и искал их на YouTube, но все, что я пытался, не работало (устарело или не актуально), как я могу добавить роль упомянутому пользователю?

Это мой код, смотри, и то, что я написал в () в конце.

 @client.command()
@commands.has_permissions(kick_members=True)  
async def mute(ctx, member:discord.Member,*,reason=None):
    Embed = discord.Embed(title = f'✅{member} was muted by {ctx.author.name}!',color = 0x00ff00)
    Embed.add_field(name=f'Reason', value=f'{reason}')
    Embed.set_image(url='https://ak.picdn.net/shutterstock/videos/1014234401/thumb/1.jpg')
    await ctx.message.channel.send(embed=Embed)
    await (The command that should add the role "Muted" to the mentioned user)
 

Ответ №1:

Сначала вам нужно получить роль от ролей гильдии.

 role = ctx.guild.get_role(role_id)
 

или

 role = discord.utils.get(ctx.guild.roles, name="Muted")
 

Теперь вы можете добавить роль целевому участнику

 await member.add_roles(role)
 

Также вам не нужно писать

 await ctx.message.channel.send()
 

Вы можете сделать это с помощью

 await ctx.send()
 

Ответ №2:

Вы можете использовать:

 role = discord.utils.get(member.guild.roles, name="Test")
await member.add_roles(role)
 

Таким образом, ваш код будет выглядеть следующим образом:

 @client.command()
@commands.has_permissions(kick_members=True)  
async def mute(ctx, member:discord.Member,*,reason=None):
    Embed = discord.Embed(title = f'✅{member} was muted by {ctx.author.name}!',color = 0x00ff00)
    Embed.add_field(name=f'Reason', value=f'{reason}')
    Embed.set_image(url='https://ak.picdn.net/shutterstock/videos/1014234401/thumb/1.jpg')
    await ctx.message.channel.send(embed=Embed)
    role = discord.utils.get(member.server.roles, name="Muted") # Change name to the muted role name!
    await member.add_roles(role)