Python Kick命令(discord.py)
所以我试着做一个kick命令,如果原因没有,那么它会说“没有原因”,而不是“没有”。不要问为什么 这是我的密码:Python Kick命令(discord.py),python,discord,discord.py,Python,Discord,Discord.py,所以我试着做一个kick命令,如果原因没有,那么它会说“没有原因”,而不是“没有”。不要问为什么 这是我的密码: @client.command() @commands.has_permissions(kick_members=True) async def kick(ctx, user: discord.Member, *, reason: str): if reason is None: await user.kick() await ctx.send(f"**
@client.command()
@commands.has_permissions(kick_members=True)
async def kick(ctx, user: discord.Member, *, reason: str):
if reason is None:
await user.kick()
await ctx.send(f"**{user}** has been kicked for **no reason**.")
else:
await user.kick(reason=reason)
await ctx.send(f"**{user}** has been kicked for **{reason}**.")
下面是错误:
Ignoring exception in command kick:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/bot.py", line 903, in invoke
await ctx.command.invoke(ctx)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 847, in invoke
await self.prepare(ctx)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 784, in prepare
await self._parse_arguments(ctx)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 699, in _parse_arguments
kwargs[name] = await self.transform(ctx, param)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 535, in transform
raise MissingRequiredArgument(param)
discord.ext.commands.errors.MissingRequiredArgument: reason is a required argument that is missing.
我不明白为什么它会说“reason是一个缺少的必需参数”,因为我说过如果reason为None,它会说no reason?如果您将
None
分配给reason
,那么您可以检查它。例如reason=None
。之后,您可以在命令中检查原因是否为None。代码如下:
@client.command()
@commands.has_权限(kick_members=True)
异步def kick(ctx,用户:discord.Member,*,reason=None):
如果不是原因:
等待user.kick()
wait ctx.send(f“**{user}**因**无原因**而被踢出。”)
其他:
等待用户。踢(原因=原因)
wait ctx.send(f“**{user}**因**{reason}**”而被踢出)
您之所以会出现此错误,是因为您的函数如下所示:
async def kick(ctx, user: discord.Member, *, reason: str):
Reason在这里不是可选的,因此它是一个必需的参数
。这意味着在没有该参数的情况下调用此函数将导致错误。添加默认值使其成为可选值
def function(requiredArgument, optionalArgument=defaultValue)
在这种情况下,
defaultValue
应该是None
。现在,当您没有为该参数传入任何内容时,将使用它的默认值。这样,您就不必再添加原因。您没有将reason
设置为可选参数(即,它需要一个默认值)。您可以在参数中执行reason:str=None
而不是reason:str