如何在discord.py中设置可选参数?

时间:2020-06-18 00:05:57

标签: python discord.py

我尝试过在线研究,但是没有其他问题可以帮助我解决问题。

这是我的情况。

我正在discord.py中执行静音命令。

我希望时间是可选的,但是如果未指定时间,则希望该参数成为原因的一部分。

澄清我的意思:

@client.command()
@commands.has_permissions(kick_members=True)
async def mute(ctx, member: Member = None, time: int = None, *, reason = None):
    pass

在这里,如果time为None,则使其成为reason的一部分。

机器人会接受这两个条件:

!mute @user 1h spam!mute @user spam

这可能吗?

2 个答案:

答案 0 :(得分:1)

您可以设置默认参数:

@bot.command()
async def mute(ctx, member: discord.Member, time=None):
    if not time:
        # Mute indefinitely? do whatever you want
    else:
        # Mute for x amount of time

参考:

答案 1 :(得分:1)

您可以选择异步等待,然后取消对用户静音:

@bot.command()
async def mute(ctx, member: discord.Member, time: typing.Optional[int]):
    await member.edit(mute=True)
    if time:
        await asyncio.sleep(time)
        await member.edit(mute=False)