【问题标题】:How to set a default using context with context defined in same line?如何使用上下文在同一行中定义的上下文设置默认值?
【发布时间】:2020-02-28 14:08:00
【问题描述】:

我正在创建一个不和谐的机器人,并且我正在尝试使其在成员说出未提及用户的命令时默认为他们自己。它不能内联,我需要 arg 在同一行中。

我尝试将默认值放在同一行,但我需要 ctx ,并且 ctx 定义在同一行,所以它不起作用。

@bot.command(name="joined", description="Shows precisely when a member of the server joined", aliases=["entry", "jointime", "join_time"], pass_context=True)
async def joined(**ctx**, member: discord.Member = **ctx.message.author.name**):
    """Says when a member joined."""
    await ctx.send('{0.name} joined in {0.joined_at}'.format(member))

当你说 !joined 或 !entry,没有用户提及时,我希望这个从上下文中获取用户并使用它。但是,它会向我抛出错误消息“未定义 ctx。”

【问题讨论】:

    标签: python discord.py


    【解决方案1】:

    可以标记参数Optional,然后在协程体中检查是否为None

    from discord import Member
    from typing import Optional
    
    @bot.command(name="joined", description="Shows precisely when a member of the server joined", aliases=["entry", "jointime", "join_time"], pass_context=True)
    async def joined(ctx, member: Optional[Member]):
        """Says when a member joined."""
        member = member or ctx.author
        await ctx.send('{0.name} joined in {0.joined_at}'.format(member))
    

    【讨论】:

      猜你喜欢
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 2012-05-06
      • 1970-01-01
      相关资源
      最近更新 更多