我尝试过在线研究,但是没有其他问题可以帮助我解决问题。
这是我的情况。
我正在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
这可能吗?
答案 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
参考:
typing.Optional
-您可能会感兴趣。答案 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)