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

Discord Bot使用aiohttp调用zenquotes.io接口无输出无报错问题求解

问题排查及修复方案

核心错误原因

  • response.text是aiohttp提供的异步方法,你当前代码未加await关键字,直接读取拿到的是协程对象而非实际响应文本,JSON解析会直接抛出异常。Discord.py默认会隐藏命令执行过程中的未捕获错误,所以你看不到报错也收不到Bot返回。
  • 潜在配置问题:2022年后Discord要求所有需要读取用户消息内容的Bot必须在开发者后台主动开启Message Content Intent权限,否则无法响应前缀类命令。
  • 可优化点:无需手动调用json.loads解析响应,aiohttp内置异步response.json()方法可直接返回解析完成的JSON对象,使用更简便。

修正后代码

import aiohttp

async def get_quote():
    async with aiohttp.ClientSession() as session:
        async with session.get("https://zenquotes.io/api/random") as response:
            # 新增await获取异步返回的JSON内容
            json_data = await response.json()
            quote = json_data[0]["q"]
            return quote

@client.command(aliases=["wow"])
async def inspire(ctx):
    # 新增异常捕获打印,方便后续排查问题
    try:
        quote = await get_quote()
        await ctx.send(quote)
    except Exception as e:
        print(f"命令执行出错: {e}")

额外排查项

如果修改后仍然无响应,请确认以下配置:

  1. Bot已成功加入目标服务器,且被分配了发送消息的权限
  2. 你设置的命令前缀和实际发送的内容匹配,例如前缀设置为!时,需要发送!inspire或!wow才能触发命令
  3. 运行环境已正确安装aiohttp依赖,可执行pip install aiohttp确认安装状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:06:03