Помогите исправить ошибку "member is a required argument that is missing"

Помогите исправить ошибку. Тольку учу питон, пытаюсь написать дискорд бота, нужно что бы он выдавал роли.

Код:

import discord
from discord.ext import commands
from discord.ext.commands import bot

bot = commands.Bot(command_prefix = "-")

@bot.command()
async def give_role (ctx, member: discord.Member):

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

    retStr = (f"""```{member} Получил новую роль ! ```""")
    embed = discord.Embed(title="New Role", colour = discord.Color.red())
    embed.add_filed(name="role name", value = retStr)
    await ctx.send(embed=embed)

bot.run(TOKEN)

Ошибка:

File "C:\Users\user_1\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\bot.py", line 939, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Users\user_1\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 855, in invoke
    await self.prepare(ctx)
  File "C:\Users\user_1\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 789, in prepare
    await self._parse_arguments(ctx)
  File "C:\Users\user_1\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 697, in _parse_arguments
    transformed = await self.transform(ctx, param)
  File "C:\Users\user_1\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 542, in transform
    raise MissingRequiredArgument(param)
discord.ext.commands.errors.MissingRequiredArgument: member is a required argument that is missing.


*Дополнение.
Ещё, опытным путем выяснял, даже есть оставить такой код ошибка остается.

import discord
from discord.ext import commands
from discord.ext.commands import bot

bot = commands.Bot(command_prefix = "-")

@bot.command()
async def give_role (ctx, member: discord.Member):
.....print("0")

bot.run(TOKEN)

Но, если функции async def give_role (ctx, member: discord.Member): оставить только один аргумент(например ctx) ошибка пропадет.

import discord
from discord.ext import commands
from discord.ext.commands import bot

bot = commands.Bot(command_prefix = "-")

@bot.command()
async def give_role (ctx):
.....print("0")

bot.run(TOKEN)

Как это можно исправить ?


Ответы (2 шт):

Автор решения: MyZik

В функцию member.add_roles() первым аргументом, нужно передавать пользователя, которому хотите дать роль:

role_1 = discord.utils.get(ctx.message.guild.roles, name = "role name")
await member.add_roles(member, role_1)
→ Ссылка
Автор решения: Merka

В общем, сама проблема крылась в embed,

from discord.utils import get

@bot.command()
async def das(ctx, member: discord.Member = None):
    

    if member is None:
        return
        
    embed = discord.Embed(title=f"123", color=random.randint(0, 0xffffff))
    embed.add_field(name="321", value=member.name, inline=True)
    await ctx.send(embed=embed)

    role = "name"
    role = get(gui.roles, name=role)
    await member.add_roles(role)

в embed, title не обязателен.

Вы неправильно написали add_field и так же опечатка была в color)

→ Ссылка