discord.py 如何接受可选参数

Posted

技术标签:

【中文标题】discord.py 如何接受可选参数【英文标题】:discord.py how to accept optional arguments 【发布时间】:2020-10-04 08:01:46 【问题描述】:

我制作了一个系统,该系统使用 JSON 文件来创建一个使用 discord.py 的带有不和谐机器人的货币系统 我希望用户能够通过 +balance 向他们展示他们拥有多少,或者通过 +balance 来查看其他人的余额。我试着做一个尝试:抓住成员的平衡,除非成员没有争论,但我不知道这是什么错误。如果没有参数表明他们想要的成员是 ctx.message.author,我该怎么做才能让机器人假设?

if exists('balances.json'):
    with open('balances.json', 'r') as file:
        balances = json.load(file)
        print(balances)
def save():
    with open('balances.json', 'w+') as f:
        json.dump(balances, f)



#Allows users to check their balance
@bot.command(pass_context=True)
async def balance(ctx, member: discord.Member):
    global balances
    if str(member.id) not in balances.keys():
        await ctx.channel.send(f'member.name not registered')
        return
    if str(member.id) in balances.keys():
        requestedUserBalance = balances[str(member.id)]
        await ctx.channel.send(f'member.name has requestedUserBalance LotusTokens')

【问题讨论】:

【参考方案1】:

要在未传递可选变量时为函数提供默认行为,您可以为其提供默认值 None 以及该变量为 None 时的行为。

@bot.command(pass_context=True)
async def balance(ctx, member: discord.Member=None):
    if member is None:
        member = ctx.message.author

    # do stuff

【讨论】:

以上是关于discord.py 如何接受可选参数的主要内容,如果未能解决你的问题,请参考以下文章

如何转发可选参数

使 URL 接受参数作为可选参数。非捕获

ORACLE PL/SQL:函数和可选参数,如何?

python进阶之装饰器之2.定义一个可接受参数的装饰器如何定义一个属性可由用户修改的装饰器定义一个能接受可选参数的装饰器

如何让 argparse 识别跟随可变长度可选参数的位置参数?

Swift中的mergedModelFromBundles不接受可选参数