【问题标题】:Discord.py - check balance of other usersDiscord.py - 检查其他用户的余额
【发布时间】:2021-12-11 07:51:23
【问题描述】:

我制作的机器人有一个经济系统,你可以通过!bal检查你的余额。但是我希望其他用户可以检查您的余额,并且您也可以检查其他用户的余额。但现在我只知道如何编码,您只能检查自己的余额。如何更改代码,以便您可以通过输入他们的 ID 或提及他们来检查其他用户的余额?

async def balance(ctx):
    await open_account(ctx.author)
    user = ctx.author

    users = await get_bank_data()

    lvsAmt = users[str(user.id)]["leaves"]
    tckAmt = users[str(user.id)]["tickets"]
    gemAmt = users[str(user.id)]["gems"]

    em = discord.Embed(
        title=f"{ctx.author.mention}'s Balance",
        description=
        f"<:zoa_leaves:918778938707279883> {lvsAmt}\n<:zoa_ticket:918774141400801330> {tckAmt}\n<:zoa_gems:918777349946888212> {gemAmt}",
        color=0xe9a9a9)
    await ctx.send(embed=em)

async def open_account(user):

    users = await get_bank_data()

    if str(user.id) in users:
        return False
    else:
        users[str(user.id)] = {}
        users[str(user.id)]["leaves"] = 0
        users[str(user.id)]["tickets"] = 0
        users[str(user.id)]["gems"] = 0

    with open('mainbank.json', 'w') as f:
        json.dump(users, f)

    return True


async def get_bank_data():
    with open('mainbank.json', 'r') as f:
        users = json.load(f)

    return users

我尝试将ctx.author 更改为ctx.user,但它不起作用

【问题讨论】:

    标签: python discord.py balance


    【解决方案1】:

    您可以在命令中添加member 参数:async def balance(ctx, member: discord.Member = None):

    async def balance(ctx, member: discord.Member):
        user = member or ctx.author
        await open_account(user)
        users = await get_bank_data()
        lvsAmt = users[str(user.id)]["leaves"]
        tckAmt = users[str(user.id)]["tickets"]
        gemAmt = users[str(user.id)]["gems"]
    
        em = discord.Embed(
            title=f"{user.mention}'s Balance",
            description=
            f"<:zoa_leaves:918778938707279883> {lvsAmt}\n<:zoa_ticket:918774141400801330> {tckAmt}\n<:zoa_gems:918777349946888212> {gemAmt}",
            color=0xe9a9a9)
        await ctx.send(embed=em)
    

    然后用户将能够通过键入类似[your_prefix]bal @User#1234 的内容来使用该命令。

    【讨论】:

    • 我试过了,它奏效了。非常感谢!
    • 那么,您能接受我的回答吗? (如果有帮助)
    • 完成,感谢您的帮助!
    【解决方案2】:

    如果有人需要,这是我现在使用的代码,它工作正常!

    @client.command(aliases=['bal'])
    async def balance(ctx, member: discord.Member=None):
        if member is None:
          member = ctx.author
    
        user = member or ctx.author
        await open_account(user)
        users = await get_bank_data()
        lvsAmt = users[str(user.id)]["leaves"]
        tckAmt = users[str(user.id)]["tickets"]
        gemAmt = users[str(user.id)]["gems"]
    
        em = discord.Embed(
            title=f"{user.mention}'s Balance",
            description=
            f"<:zoa_leaves:918778938707279883> {lvsAmt}\n<:zoa_ticket:918774141400801330> {tckAmt}\n<:zoa_gems:918777349946888212> {gemAmt}",
            color=0xe9a9a9)
        await ctx.send(embed=em)
    
    async def open_account(user):
    
        users = await get_bank_data()
    
        if str(user.id) in users:
            return False
        else:
            users[str(user.id)] = {}
            users[str(user.id)]["leaves"] = 0
            users[str(user.id)]["tickets"] = 0
            users[str(user.id)]["gems"] = 0
    
        with open('mainbank.json', 'w') as f:
            json.dump(users, f)
    
        return True
    
    
    async def get_bank_data():
        with open('mainbank.json', 'r') as f:
            users = json.load(f)
    
        return users
    

    【讨论】:

      猜你喜欢
      • 2011-08-17
      • 2021-05-19
      • 2017-02-18
      • 1970-01-01
      • 2015-06-14
      • 2022-11-15
      • 1970-01-01
      • 2015-12-28
      • 2022-10-17
      相关资源
      最近更新 更多