警告命令discord.py KeyError出现问题

2024-04-29 03:07:43 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我在使用warn命令时遇到了一些问题,我认为这是一个键错误,但我不知道如何修复它。这是代码。我确实检查了代码,但我找不到发生错误的原因。谢谢你能给我的所有帮助,我希望这段代码不至于太糟糕

async def warncount():
    with open("warncount.json", 'r') as f:
        count = json.load(f)
    number = count[str("Number")]
    return number

async def get_warn_data():
    with open("warns.json", 'r') as f:
        warns = json.load(f)
    return warns


@client.command()
@commands.is_owner()
async def warn(ctx, member: discord.Member, *, arg="No reason given"):
    number = await warncount()
    warns = await get_warn_data()
    case = number+1
    if str(member.id) in warns:
        try:
            obj = {"Author": ctx.author, "Reason": arg}
            warns[str(member.id)][case].append(obj)
            with open("warns.json", 'w') as f:
                json.dump(warns, f)
        except:
            try:
                obj = {"Author": ctx.author, "Reason": arg}
                warns[str(member.id)][case] = obj
                with open("warns.json", 'w') as f:
                    json.dump(warns, f)
            except Exception:
                print(Exception)
        with open("warncount.json", 'r') as f:
            count = json.load(f)
        count[str("Number")] += 1
        with open("warncount.json", 'w') as f:
            json.dump(count, f)
        await ctx.send(f"{member} has been warned for {arg} to check his warns do .warns {member}")

    else:
        try:
            warns[str(member.id)]
            with open("warns.json", 'w') as f:
                json.dump(warns, f)
        except Exception:
            print(Exception)
        try:
            obj = {"Author": ctx.author, "Reason": arg}
            warns[str(member.id)][case].append(obj)
            with open("warns.json", 'w') as f:
                json.dump(warns, f)
        except:
            try:
                obj = {"Author": ctx.author, "Reason": arg}
                warns[str(member.id)][case] = obj
                with open("warns.json", 'w') as f:
                    json.dump(warns, f)
            except Exception:
                print(Exception)
        with open("warncount.json", 'r') as f:
            count = json.load(f)
        count[str("Number")] += 1
        with open("warncount.json", 'w') as f:
            json.dump(count, f)
        await ctx.send(f"{member} has been warned for {arg} to check his warns do .warns {member}")

Tags: idjsonobjascountwithexceptionarg