Помогите исправить ошибку "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)