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

如何将API数据输出到Discord机器人并解决KeyError: 'cod'报错

错误原因
  • 你使用的随机手机号API返回的JSON结构中不存在cod字段,cod是天气类接口的常用状态字段,直接套用其他接口的逻辑自然会触发KeyError: 'cod'报错
  • 原有代码还存在其他逻辑错误:你将数值类型的x["id"]赋值给y后尝试取y["phone"],取值逻辑完全不符合接口返回结构,手机号实际直接存放在返回JSON的phone_number字段中
  • 缺失基础的请求状态校验和异常捕获逻辑,报错直接中断程序运行
修正后完整代码
import requests
import discord
from discord.ext import commands

# 前缀和权限根据你自己的Bot配置调整
client = commands.Bot(command_prefix="!", intents=discord.Intents.all())

@client.command()
async def o(ctx):
    channel = ctx.message.channel
    url = "https://random-data-api.com/api/phone_number/random_phone_number"
    try:
        response = requests.get(url, timeout=10)
        # 直接校验HTTP请求状态是否正常
        response.raise_for_status()
        x = response.json()
        async with channel.typing():
            # 按接口实际结构取手机号字段
            cell_phone = x["phone_number"]
            embed = discord.Embed(
                title=f"生成的随机手机号:{cell_phone}",
                color=0x00FFFF,
                timestamp=ctx.message.created_at,
            )
        await channel.send(embed=embed)
    except requests.exceptions.RequestException:
        await channel.send("接口请求失败,请稍后重试")
    except KeyError as e:
        await channel.send(f"返回数据异常,缺失字段:{e}")

# 替换为你自己的Bot Token后运行
# client.run("YOUR_BOT_TOKEN")
改动说明
  • 删除了不存在的cod字段校验逻辑,用HTTP响应状态校验替代
  • 修正了字段取值逻辑,适配目标接口的实际返回结构
  • 新增全局异常捕获,避免报错直接导致程序崩溃
  • 调整了变量作用域逻辑,避免出现变量未定义的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:36:03