微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

遇到奇怪的key错误,是json还是我的语句有关系?

如何解决遇到奇怪的key错误,是json还是我的语句有关系?

我正在编写一个 discord.py bot,这是警告命令,它会通过警告 cmd 记录警告! 为什么会出现关键错误?我的 JSON:

{"777618366894571530": {"1": "ROMO charged by ROMO#6714 for demo"}}

我用来获取警告的脚本:

if str(guildid) in warns:
    for value in warns.items():
        
        warnval = warns[str(guildid)][value]
        if user in warnval:
            embed.add_field(name=f"``Warn {value}``",value=f"{warnval}",inline=True)
        
else:
  await ctx.send("Guild has no warns!")

我的完整警告 cmd 从 json 中获取警告:

  @command()
  @cooldown(9,20,BucketType.user)
  async def warns(self,ctx,user : discord.Member):
    guild = user.guild
    guildid = user.guild.id
    userid = user.id
    print("LOADING")
    warns = {}
    guildid = ctx.guild.id
    placing = (len(warns)+1)
    with open("./warns.json","r") as f:
      warns = json.load(f)

    embed = discord.Embed(title=f"Warns",description= f"Warns for user {user}",color=0x00ff00)

    
    if str(guildid) in warns:
      for value in warns.items():
        
        warnval = warns[str(guildid)][value]
        if user in warnval:
          embed.add_field(name=f"``Warn {value}``",inline=True)
        
    else:
      await ctx.send("Guild has no warns!")
    

    embed.set_footer(text=f"These are {user.display_name}'s warns.")
    await ctx.send(embed=embed)


解决方法

我认为这就是你想要的:

found_warning = False
if str(guildid) in warns:
    for key,warnval in warns[str(guildid)].items():
        if user.name in warnval:
            embed.add_field(name=f"``Warn {key}``",value=f"{warnval}",inline=True)
            found_warning = True
if not found_warning:
    await ctx.send("Guild has no warns!")

items() 返回包含字典键和值的元组。您只想在值中搜索用户。您不需要再次索引字典,因为它会返回值。

使用 found_warning 变量来判断它是否在任何警告中找到了用户。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?