Discord Node.js机器人替换Twitter链接报错:无法发送空消息
问题解决:Discord Bot 替换Twitter/X链接错误修复
错误原因分析
let twitterReplaced = twitterReplace完全多余,直接使用twitterReplace即可。- 正则表达式
twitterCut存在语法错误:开头多了无效的g字符,导致无法匹配任何内容,twitterFixed变为null,触发「无法发送空消息」的错误。 - 原逻辑试图截取
?之前的内容,但fxtwitter支持带参数的链接,无需额外截取;若需保留核心状态链接,也需修正正则写法。
修正后的代码
client.on("messageCreate", async (message) => { // 精准匹配Twitter/X状态链接的正则 const twitterLinkRegex = /https:\/\/(twitter\.com|x\.com)\/\w+\/status\/\d+/gi; if (message.author.bot) return; // 提取消息中所有符合条件的链接 const matches = message.content.match(twitterLinkRegex); if (!matches) return; // 将每个链接替换为fxtwitter域名 const fixedLinks = matches.map(link => link.replace(/(twitter\.com|x\.com)/, "fxtwitter.com")); // 回复修正后的链接,每行一个 message.reply({ content: fixedLinks.join("\n"), allowedMentions: { repliedUser: false } }); });
关键改进点
- 简化正则表达式,只匹配有效的Twitter/X状态链接,避免误处理无关内容。
- 使用
match提取所有目标链接,而非替换整个消息内容,确保仅输出修正后的URL。 - 移除冗余的变量赋值,代码更简洁高效。
- 支持同时处理多条链接,用换行分隔回复结果。
内容的提问来源于stack exchange,提问作者Danny P
相关产品推荐
相关产品推荐

