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

discord.js机器人发送图片的代码无法运行,存在什么问题?

代码存在的问题
  • 路径转义错误:JavaScript字符串中反斜杠\是转义字符,你写的C:\Users\myname\...里的\U、\m等会被识别为转义序列,无法指向正确的本地文件路径。
  • 版本兼容问题:如果你使用的是v13及以上的新版本discord.js,直接在send方法中传files字段的旧写法已经不被支持,需要使用官方提供的AttachmentBuilder类构建附件对象。
  • 潜在语法问题:你贴出的代码片段以闭合大括号}开头,要注意检查整个if/else链的大括号是否配对,避免基础语法错误。
  • 潜在权限问题:OneDrive目录常存在同步锁或权限限制,机器人运行时可能没有权限读取该路径下的文件。
修复方案

如果你使用discord.js v12及更早版本

仅修正路径即可,路径可以用双反斜杠转义,也可以直接用正斜杠避免转义问题:

} else if (message.content.startsWith('!ping')) {
  message.channel.send({files: ["C:/Users/myname/OneDrive/Pictures/folder/image.jpg"]}); 
}

如果你使用discord.js v13/v14等新版本

首先在文件顶部引入AttachmentBuilder依赖:

const { AttachmentBuilder } = require('discord.js');

再修改逻辑部分代码:

} else if (message.content.startsWith('!ping')) {
  const imageAttachment = new AttachmentBuilder("C:/Users/myname/OneDrive/Pictures/folder/image.jpg");
  message.channel.send({ files: [imageAttachment] });
}

额外优化建议

可以使用Node.js内置的path模块拼接路径,自动适配不同系统的路径分隔符,彻底避免转义问题:

const path = require('path');
// 自动拼接正确格式的路径
const imagePath = path.join('C:', 'Users', 'myname', 'OneDrive', 'Pictures', 'folder', 'image.jpg');

如果调试时仍报错,建议把图片放到机器人项目的同目录下,用./image.jpg这类相对路径访问,排除OneDrive的权限影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 06:45:00