Python 接受多个单词作为参数的Discord bot

Python 接受多个单词作为参数的Discord bot,python,discord,Python,Discord,所以,我正在制作一个能够警告用户的机器人。我想知道是否有一种方法可以使它能够接受“reason”参数中的多个单词,而不必写引号 @client.command(name = "warn") @commands.has_role("staff") async def warn(ctx, member: discord.Member, reason = "No reason given"): publiclog = client.g

所以,我正在制作一个能够警告用户的机器人。我想知道是否有一种方法可以使它能够接受“reason”参数中的多个单词,而不必写引号

@client.command(name = "warn")
@commands.has_role("staff")
async def warn(ctx, member: discord.Member, reason = "No reason given"):
    publiclog = client.get_channel("channel id")
    embedVar = discord.Embed(title=":warning: Warning", description=f"{member} has been warned", colour = discord.Colour.orange())
    embedVar.add_field(name="Reason", value= reason, inline=True)
    embedVar.add_field(name="Warned by:", value= f"{ctx.author}", inline=True)
    embedVar.set_thumbnail(url=member.avatar_url)
    await ctx.send(f"<@{member.id}> has been warned. Reason: {reason}")
    await publiclog.send(embed=embedVar)
@client.command(name=“warn”)
@commands.has_角色(“员工”)
异步定义警告(ctx,成员:discord.member,reason=“未给出原因”):
publiclog=client.get_通道(“通道id”)
embedVar=discord.Embed(title=“:warning:warning”,description=f“{member}已被警告”,color=discord.color.orange())
embedVar.add_字段(name=“Reason”,value=Reason,inline=True)
embedVar.add_字段(name=“warning by:”,value=f“{ctx.author}”,inline=True)
embedVar.set_缩略图(url=member.avatar_url)
wait ctx.send(f“已被警告。原因:{Reason}”)
等待publiclog.send(嵌入=embedVar)
因此,现在,如果一名工作人员调用该函数,并且他们编写了
>警告@user他们是认真的
,则bot只会编写一个原因“他们”。有没有一种方法可以让它写下全部原因,而不必写
>警告@user“他们的意思”

我想如果您添加
*,
它会工作。

@client.command(name=“warn”)
@client.command(name = "warn")
@commands.has_role("staff")
async def warn(ctx, member: discord.Member, *reason = "No reason given"):
    reason = " ".join(reason)
    publiclog = client.get_channel("channel id")
    embedVar = discord.Embed(title=":warning: Warning", description=f"{member} has been warned", colour = discord.Colour.orange())
    embedVar.add_field(name="Reason", value= reason, inline=True)
    embedVar.add_field(name="Warned by:", value= f"{ctx.author}", inline=True)
    embedVar.set_thumbnail(url=member.avatar_url)
    await ctx.send(f"<@{member.id}> has been warned. Reason: {reason}")
    await publiclog.send(embed=embedVar)
@commands.has_角色(“员工”) 异步定义警告(ctx,成员:discord.member,*reason=“未给出原因”): 原因=“加入(原因) publiclog=client.get_通道(“通道id”) embedVar=discord.Embed(title=“:warning:warning”,description=f“{member}已被警告”,color=discord.color.orange()) embedVar.add_字段(name=“Reason”,value=Reason,inline=True) embedVar.add_字段(name=“warning by:”,value=f“{ctx.author}”,inline=True) embedVar.set_缩略图(url=member.avatar_url) wait ctx.send(f“已被警告。原因:{Reason}”) 等待publiclog.send(嵌入=embedVar)

添加*将接受任意数量的参数,并且加入它们将使其成为一个字符串

我理解其原因,但当我在原因之前写入*时,我会得到一个语法错误。
@client.command(name = "warn")
@commands.has_role("staff")
async def warn(ctx, member: discord.Member, *reason = "No reason given"):
    reason = " ".join(reason)
    publiclog = client.get_channel("channel id")
    embedVar = discord.Embed(title=":warning: Warning", description=f"{member} has been warned", colour = discord.Colour.orange())
    embedVar.add_field(name="Reason", value= reason, inline=True)
    embedVar.add_field(name="Warned by:", value= f"{ctx.author}", inline=True)
    embedVar.set_thumbnail(url=member.avatar_url)
    await ctx.send(f"<@{member.id}> has been warned. Reason: {reason}")
    await publiclog.send(embed=embedVar)