Discord.js 嵌入消息中黑色代码块与模板字符串适配问题咨询
Discord.js 嵌入消息格式兼容问题修复方案
核心问题根因
- 普通字符串(双引号/单引号包裹)不支持
${}插值语法,因此你用双引号写的模板表达式会直接被识别为纯文本输出。仅JS模板字符串(反引号包裹)才会自动解析插值内容并计算取值。 - 改用模板字符串后直接报错,本质是JS模板字符串的边界符和Discord格式用的反引号冲突:模板字符串本身用反引号作为起止标记,内部如果要使用反引号字符,必须添加转义符
\,否则JS会将内部的反引号识别为模板字符串的结束位置,触发语法错误。 - 额外格式问题:Discord的代码块格式不支持双反引号,行内代码用单个反引号包裹,块级黑色代码块需要用三个反引号包裹,双反引号无法被Discord识别为有效格式。
可直接使用的正确写法
方案1:普通字符串手动拼接(无转义需求,兼容性最好)
适合不想处理模板字符串转义的场景,直接用加号拼接普通字符串和插值计算结果:
.setDescription( "**Websocket Latency** \n" + "`test` \n" + // 行内代码用单个反引号;要做块级代码则替换为"```\ntest\n```" "**API Latency** " + (Date.now() - message.createdTimestamp) + "ms" )
方案2:转义内部反引号的模板字符串(插值更简便)
需要将Discord格式用到的所有反引号转义,避免JS解析冲突:
.setDescription( `**Websocket Latency** \n` + // 单个反引号做行内代码,必须转义 `\`test\` \n` + // 块级黑色代码块的写法,三个反引号全部转义 // `\`\`\`test\`\`\` \n` + `**API Latency** ${Date.now() - message.createdTimestamp}ms` )
注意:如果要实现多行块级黑色代码块效果,直接把对应位置的单个转义反引号替换为三个转义反引号即可,可正常渲染且不会触发JS语法报错。
内容的提问来源于stack exchange,提问作者John Smith Bro
相关产品推荐
相关产品推荐

