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

TypeScript开发Discord v13机器人解析JSON生成Embed报错如何解决?

问题排查与解决方案

错误原因

你的报错核心是传入JSON.parse的字符串不符合标准JSON格式:
标准JSON对象必须用英文大括号{}包裹所有键值对,你发送的命令参数里只有键值对没有外层大括号,解析器无法识别为JSON对象。你收到的SyntaxError: Unexpected token : in JSON at position 7错误正好对应这个问题:去掉命令前缀后的输入内容第一个值是字符串"title",JSON解析器预期字符串结束后是结束标记或者分隔逗号,却直接遇到了冒号,所以触发语法错误。
另外你的代码没有做异常捕获,JSON解析失败后直接抛出未捕获异常,所以机器人不会返回任何响应。

解决步骤

  • 第一步:修正输入格式
    发送命令时要传入完整合法的JSON对象,用大括号包裹所有键值对,示例输入:
    !createembed {"title": "Hello world", "description": "hello world"}
    
    注意所有符号都要使用英文半角,不要给JSON整体加额外引号。
  • 第二步:给代码增加异常捕获逻辑,避免解析失败直接崩溃,同时给用户明确的错误提示:
    修改后的命令代码如下:
    import { ICommand } from 'wokcommands';
    import { MessageEmbed } from 'discord.js';
    
    export default {
        category: 'Embeds',
        description: 'Creates a custom embed with JSON',
        aliases: ['newembed', 'embedcreate'],
    
        callback: ({ text, message }) => {
            try {
                const json = JSON.parse(text.trim())
                const jsonEmbed = new MessageEmbed(json)
                return jsonEmbed
            } catch (err) {
                return `Embed生成失败,JSON格式错误:${(err as Error).message}\n请检查输入的JSON是否符合规范,完整JSON对象需要用{}包裹所有键值对。`
            }
        }
    } as ICommand
    
  • 第三步(可选排查):如果修正输入后仍然报错,可以在JSON.parse前加一行console.log('收到的参数内容:', text),查看WOKCommands返回的text是否和你输入的内容一致,避免工具自动转义掉特殊字符导致格式异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:45:06