DiscordJS v14:如何在嵌入消息中实现用户输入内容换行?
解决Discord嵌入消息描述内容换行问题
问题核心是Discord斜杠命令的字符串参数会自动处理掉输入中的换行符(比如用户输入时按回车的换行),但保留Markdown格式标记(比如**加粗),所以需要手动处理换行逻辑。
以下是两种可行方案:
方案一:让用户用转义换行符标记,代码中替换
让用户输入时用\n表示换行(比如输入第一行内容\n第二行内容),然后在代码中将转义的\n替换为实际的换行符:
let content = interaction.options.getString("content"); // 全局替换转义换行符为真实换行 content = content.replace(/\\n/g, '\n'); const embed = new EmbedBuilder() .setDescription(content);
方案二:处理用户Shift+回车输入的换行
如果用户在斜杠命令输入框中按Shift+回车输入换行,Discord可能会传递\r\n格式的换行符,这时候可以统一转换为标准换行:
let content = interaction.options.getString("content"); // 适配不同换行符格式 content = content.replace(/\r?\n/g, '\n'); const embed = new EmbedBuilder() .setDescription(content);
注意:如果Discord API直接将输入中的换行转换成了空格,方案二就无法生效,此时方案一是更可靠的选择。
内容的提问来源于stack exchange,提问作者JustinL
相关产品推荐
相关产品推荐

