警告命令缺少要求错误

时间:2021-02-24 09:47:14

标签: python discord discord.py

我希望机器人在 1 天内删除警告角色,但是它给了我一个错误。 这是我尝试过的代码,我可以在代码工作时更改整个代码:

@commands.has_permissions(ban_members=True)
async def warn(ctx,member:discord.Member, *,reason=None,time:int):
    warn_role=ctx.guild.get_role(811176827803795486)
    time_convert = {"d": 86400}
    tempmute = int(time[0]) * time_convert[time[-1]]

    await member.add_roles(warn_role)
    await ctx.send(f'{member.mention} has been warned for {reason}')
    await asyncio.sleep(tempmute)
    await member.remove_roles(warn_role)
    await member.send(f'{member.mention} is free to go')

错误信息:

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: warn() missing 1 required keyword-only argument: 'time'

1 个答案:

答案 0 :(得分:0)

正如@Kemp 所指出的,您将不得不重新排列您的参数,以便您可以充分传递所有参数。

@commands.has_permissions(ban_members=True)
async def warn(ctx, member : discord.Member, time : int, *, reason=None):
    warn_role=ctx.guild.get_role(811176827803795486)
    time_convert = {"d": 86400}
    tempmute = int(time[0]) * time_convert[time[-1]]

    await member.add_roles(warn_role)
    await ctx.send(f'{member.mention} has been warned for {reason}')
    await asyncio.sleep(tempmute)
    await member.remove_roles(warn_role)
    await member.send(f'{member.mention} is free to go')

因此,现在您可以将其作为 warn <member> <time> <reason> 运行,其中 reason 可以是多个关键字。