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

如何从指定URL获取JSON响应并触发!test指令时返回对应数据

实现步骤

1. 从指定接口获取JSON响应

你给出的接口https://api.mathjs.org/v4/?expr=2*2是公开可直接调用的GET接口,不需要额外鉴权,不同环境下的获取方式如下:
该接口正常响应的JSON格式为{"result":"4"},你可以调用后自行核对返回结果是否正常。

  • 浏览器/Node.js 原生JavaScript实现:
// 封装获取接口JSON的函数
async function getMathResult() {
  try {
    const response = await fetch('https://api.mathjs.org/v4/?expr=2*2')
    // 直接解析为JSON格式
    const jsonResult = await response.json()
    return jsonResult
  } catch (err) {
    console.error('接口请求失败:', err)
    return { error: '请求接口失败' }
  }
}
  • Python 实现:
import requests
import json

def get_math_result():
    try:
        response = requests.get('https://api.mathjs.org/v4/?expr=2*2')
        # 解析JSON响应
        json_result = response.json()
        return json_result
    except Exception as err:
        print(f"接口请求失败: {err}")
        return {"error": "请求接口失败"}

2. 绑定!test指令触发逻辑

根据你使用的机器人框架不同,指令监听的写法有差异,核心逻辑是监听到用户输入的内容严格等于!test时,调用上面的接口获取函数,拿到结果后发送出去。

  • Node.js Discord.js 框架示例:
// 监听消息发送事件
client.on('messageCreate', async (message) => {
  // 过滤机器人自己发的消息,避免循环触发
  if (message.author.bot) return
  // 判断消息内容是否是!test指令
  if (message.content.trim() === '!test') {
    const result = await getMathResult()
    // 把JSON结果转为格式化字符串发送
    message.reply(`\`\`\`json\n${JSON.stringify(result, null, 2)}\n\`\`\``)
  }
})
  • Python NoneBot2 框架示例:
from nonebot import on_command
from nonebot.adapters.onebot.v11 import MessageSegment

test_matcher = on_command("test", prefixes="!")

@test_matcher.handle()
async def handle_test():
    result = get_math_result()
    # 发送格式化的JSON结果
    await test_matcher.finish(MessageSegment.text(f"```json\n{json.dumps(result, indent=2, ensure_ascii=False)}\n```"))

注意:如果需要在公网环境高频调用该接口,建议自行添加缓存逻辑,避免被接口方限制访问。

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

相关产品推荐
方舟 Agent Plan

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

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