Как сделать упоминание участника в команде необязательным? - PullRequest
0 голосов
/ 12 июля 2020

Я создал код, который отправляет гифку с командой hug on и указывает, кому это нужно, однако я также хочу сделать упоминание участника необязательным. 1003 *

@client.command()
async def hug(ctx, member):
    username = ctx.message.author.display_name
    embed = discord.Embed(title = (f'{username} has sent a hug to {member}!'), description = ('warm, fuzzy and comforting <3'), color = 0x83B5E3)
    image = random.choice([(url1), (url2),....(url10)])
    embed.set_image(url=image)
    await ctx.channel.send(embed=embed)

Я хочу изменить его, чтобы, если автор использует команду, а не не упоминает участника, команда по-прежнему работает и вместо этого отправляет одну из гифок. Нужно ли мне создавать оператор if?

Кроме того, если это возможно, как мне изменить его так, чтобы отображаемое имя члена использовалось точно так же, как используется отображаемое имя автора?

Я пробовал сделать что-то подобное, но это не сработало:

@client.command()
async def hug(ctx, member):
    username = ctx.message.author.display_name
    name = member.display_name
    embed = discord.Embed(title = (f'{username} has sent a hug to {name}!'), description = ('warm, fuzzy and comforting <3'), color = 0x83B5E3)
    image = random.choice([(url1), (url2),...(url10)])
    embed.set_image(url=image)
    await ctx.channel.send(embed=embed)

Заранее спасибо за любую помощь

1 Ответ

1 голос
/ 12 июля 2020

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

Кроме того, определив member как Member в аргументах функции, вы сможете получить доступ к информации упомянутого члена.

Вот как вы его используете:

@client.command()
async def hug(ctx, member: discord.Member = None):
    if member:
        embed = discord.Embed(title=f'{ctx.author} has sent a hug to {member}!',
                              description='warm, fuzzy and comforting <3',
                              color=0x83B5E3)
    else:
        embed = discord.Embed(color=0x83B5E3)
        image = random.choice([(url1), (url2),....(url10)])
        embed.set_image(url=image)

    await ctx.channel.send(embed=embed)
...