Python Discord.py if语句不起作用

Python Discord.py if语句不起作用,python,python-3.x,discord.py,Python,Python 3.x,Discord.py,我有这段代码(Python3.6),它应该这样做,如果用户随身携带钱包,那么显示余额。如果他们没有钱包,用板条箱装一个钱包并显示余额 我有一个名为amounts.json的文件,用户id为 代码总是跳转到语句,在语句中,它说用户没有帐户,而实际上我有,并给出错误: discord.ext.commands.errors.CommandInvokeError: Command raised an exception: BlockIoAPIError: Failed: Label already e

我有这段代码(Python3.6),它应该这样做,如果用户随身携带钱包,那么显示余额。如果他们没有钱包,用板条箱装一个钱包并显示余额

我有一个名为amounts.json的文件,用户id为

代码总是跳转到语句,在语句中,它说用户没有帐户,而实际上我有,并给出错误:

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: BlockIoAPIError: Failed: Label already exists on your account for Network=DOGE.
我如何修复它,使它不会在每次执行“平衡”命令时尝试制作钱包

代码:

Json代码:

amounts = {}
@client.event
async def on_ready():
    global amounts
    try:
        with open('amounts.json') as f:
            amounts = json.load(f)
    except FileNotFoundError:
        print("Could not load amounts.json")
        amounts = {}

您需要对json文件进行数据修复,使其具有代码所期望的结构。如果存在重复条目,则以下条目将对其值求和。这不是你的机器人的一部分,你应该只运行一次。您还需要检查涉及或依赖于
金额的任何其他代码

import json

with open('amounts.json') as f:
    old_amounts = json.load(f)

new_amounts = {}
for d in old_amounts:
    for k, v in d:
        new_amounts[k] = new_amounts.get(k, 0) + v

with open('amounts.json') as f:
    json.dump(new_amounts, f)

那些
d2=json.loads(s1)
行可能应该是
d2=json.loads(s1)

显示将
amounts.json
加载到
amounts
变量中的代码。另外,什么是
块io
?这就是你的错误所在。block_io是一个区块链钱包东西@PatrickHaugh我会立即用json代码更新它。你能显示amounts.json文件中的条目吗?同时检查
print(discord.\uu version\uu)
以查看您使用的是哪个版本的discord.py。在某些版本中,
id
s是字符串,但在较新的版本中,它们是整数。版本是0.16.12条目是:非常感谢!将很快测试它:DBut如果我喜欢:if user_id in x:将是旧金额还是新金额放在那里?运行此脚本后,
amounts.json
文件应更改为字典结构,因此当您
将它加载到bot中时,您将获得一个字典。因此,下次运行bot时,它将使用新的金额。
import json

with open('amounts.json') as f:
    old_amounts = json.load(f)

new_amounts = {}
for d in old_amounts:
    for k, v in d:
        new_amounts[k] = new_amounts.get(k, 0) + v

with open('amounts.json') as f:
    json.dump(new_amounts, f)