Python Discord.py if语句不起作用
我有这段代码(Python3.6),它应该这样做,如果用户随身携带钱包,那么显示余额。如果他们没有钱包,用板条箱装一个钱包并显示余额 我有一个名为amounts.json的文件,用户id为 代码总是跳转到语句,在语句中,它说用户没有帐户,而实际上我有,并给出错误: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
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)