Discord money机器人将用户ID保留在json文件中。Bot重新启动时,会为每个人创建一个新的(但相同的)ID

Discord money机器人将用户ID保留在json文件中。Bot重新启动时,会为每个人创建一个新的(但相同的)ID,第1张

Discord money机器人将用户ID保留在json文件中。Bot重新启动时,会为每个人创建一个新的(但相同的)ID

发生这种情况是因为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")


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5620271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存