所以我在使用 warn 命令时遇到了一些问题,我认为问题是 KeyError 但我不知道如何解决。这是代码。我确实查看了代码,但我找不到错误发生的原因。感谢您提供的所有帮助,我希望这段代码不会太糟糕,值得审查,哈哈。
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}")