You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python-discord.py读取JSON文件中的数字?

修复读取JSON警告数的代码问题

你的代码会返回整个JSON文件内容,核心问题有两个:

  1. 没正确定位到存储成员警告数的内层字典——你的JSON外层是{"Youtube tutorial bot test": {...}},必须先拿到这个内层字典,才能找到对应成员的数字值
  2. 你访问warns[str(member.name)]后没有保存这个值,最后返回的仍是整个warns字典(也就是整个文件内容)

修复后的代码

import json
import discord

def warns_check(member: discord.Member):
    with open('warns.json', 'r') as f:
        warns_data = json.load(f)
        # 先获取存储警告信息的内层字典
        member_warn_dict = warns_data["Youtube tutorial bot test"]
        # 返回对应成员的警告数,成员不存在时默认返回0(避免报错)
        return member_warn_dict.get(str(member.name), 0)

@client.command()
async def checkwarns(ctx, member: discord.Member):
    warn_count = warns_check(member)
    await ctx.send(f"{member.name} has {warn_count} warnings")

补充说明

  • 用dict.get()方法可以避免成员不在JSON中时抛出KeyError,如果需要特殊处理成员不存在的情况,你可以把默认返回的0改成自定义提示,比如返回"No warnings found"并在命令里做对应处理
  • 现在warns_check函数返回的是单个数字,而非整个JSON字典,发送的消息只会显示对应成员的警告数

内容的提问来源于stack exchange,提问作者Ivan Parvanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 10:01:16