Проблема с командой для бота на discord.py

В общем я пишу бота и столкнулся с довольно страной проблемой. Я написал команду, которая выводит аватар выбранного пользователя в Embed сообщении

@bot.command(pass_context=True)
async def Avatar(ctx, *member: discord.Member):
    if member:
        embedVar = discord.Embed(title = "Аватар участника " + member.name, color = 0x9932cc)
        embedVar.set_image(url = member.avatar)
    else:
        user = ctx.message.author
        embedVar = discord.Embed(title = "Аватар участника " + ctx.author.name, color = 0x9932cc)
        embedVar.set_image(url = user.avatar)
    await ctx.send(embed = embedVar)

В этой команде можно указать пользователя, но это не обязательно. Если этого не делать, то команда выводит аватар автора сообщения. Если указать пользователя, то соответственно выведет его аватар. Но когда я пытаюсь вызвать эту команду с указанием пользователя - мне говорят что в кортеже member нет элемента name.

  File "c:\Users\Сергей\Desktop\AbsoluteSolver\bot.py", line 78, in Avatar
    embedVar = discord.Embed(title = "Аватар участника " + member.name, color = 0x9932cc)
                                                           ^^^^^^^^^^^
AttributeError: 'tuple' object has no attribute 'name'

При этом если я из кода убираю звезду(которая делает аргумент не обязательным), то ошибка исчезает, но, понятное дело, команда не будет работать без аргументов. Мне бы хотелось что бы работало и то, и другое. Я пробовал так же поменять в списке аргументов Member на User, но ошибка не исчезла


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

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

Т.к. в определение вашей функции не member, а *member, то значение переменной member будет кортеж с одним элементом.

Примените команду (запятая в ней важнa)

member, = member

после if, чтобы в переменной member получить сам объект (типа discord.Member) т.е.

if member:
    member, = member
    embedVar = discord.Embed(title = "Аватар участника " + member.name, color = 0x9932cc)
    embedVar.set_image(url = member.avatar)
→ Ссылка