发生这种情况是因为JSON对象始终具有用于“键”的字符串。因此
json.dump将整数键转换为字符串。您可以通过在使用用户ID之前将其转换为字符串来完成相同的 *** 作。
from discord.ext import commandsimport discordimport jsonbot = commands.Bot('!')amounts = {}@bot.eventasync 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 = {}@bot.command(pass_context=True)async def balance(ctx): id = str(ctx.message.author.id) if id in amounts: await ctx.send("You have {} in the bank".format(amounts[id])) else: await ctx.send("You do not have an account")@bot.command(pass_context=True)async def register(ctx): id = str(ctx.message.author.id) if id not in amounts: amounts[id] = 100 await ctx.send("You are now registered") _save() else: await ctx.send("You already have an account")@bot.command(pass_context=True)async def transfer(ctx, amount: int, other: discord.Member): primary_id = str(ctx.message.author.id) other_id = str(other.id) if primary_id not in amounts: await ctx.send("You do not have an account") elif other_id not in amounts: await ctx.send("The other party does not have an account") elif amounts[primary_id] < amount: await ctx.send("You cannot afford this transaction") else: amounts[primary_id] -= amount amounts[other_id] += amount await ctx.send("Transaction complete") _save()def _save(): with open('amounts.json', 'w+') as f: json.dump(amounts, f)@bot.command()async def save(): _save()bot.run("Token")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)