使用discord.js开发Discord机器人无法发送图片问题求助
问题根因
你当前使用的是discord.js v13及以上版本,message.channel.send() 的API语法已完成重构,旧版本分开传「文本内容」「配置项」两个参数的写法已失效,因此只有文本内容被识别,附件配置没有生效。
修复方案(在线图片)
将pic命令的代码修改为如下写法,把文本和附件配置统一放在同一个对象参数中即可:
else if (command === 'pic') { message.channel.send({ content: "little dog", files: ["https://i.imgur.com/xxXXXxx.jpeg"] }); }
注意:需要确保你用的imgur链接是直接指向图片资源的直链(后缀为.jpeg/.png等图片格式),不能是imgur的图片预览页面链接。
本地图片发送方案
直接将files数组内的链接替换为本地图片的相对/绝对路径即可,推荐使用path模块拼接绝对路径避免路径解析错误:
- 首先在代码顶部引入path模块
const path = require('path');
- 调整pic命令代码,假设本地图片名为
dog.jpeg存放在项目根目录:
else if (command === 'pic') { message.channel.send({ content: "little dog", files: [path.join(__dirname, 'dog.jpeg')] }); }
如果使用的是discord.js v14版本,也可以用官方提供的AttachmentBuilder构造附件,写法如下:
// 顶部引入AttachmentBuilder const { Client, Intents, AttachmentBuilder } = require('discord.js'); // pic命令内写法 else if (command === 'pic') { // 在线图片 const image = new AttachmentBuilder("https://i.imgur.com/xxXXXxx.jpeg"); // 本地图片写法:const image = new AttachmentBuilder(path.join(__dirname, 'dog.jpeg')); message.channel.send({ content: "little dog", files: [image] }); }
小提示:请确认你的机器人账号在对应频道拥有「附件上传」权限,否则也会出现图片无法发送的问题。
内容的提问来源于stack exchange,提问作者jdddddddddd
相关产品推荐
相关产品推荐

