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

使用Discord.js v13.16.0发送Jimp生成图片失败,仅发送文本

Discord.js v13 成员欢迎图片发送失败解决方案

你遇到的问题是因为Discord.js v13的channel.send()参数格式使用错误,以下是两种正确的实现方式:

方法一:使用本地文件路径发送

直接将生成的图片路径放入files数组,与文本内容一起作为配置对象传入send():

client.on('guildMemberAdd', async (member) => {
    try {
        // ... 你的Jimp图片处理代码保持不变 ...
        await image.writeAsync('outimage.png');
    
        const channel = member.guild.channels.cache.get('1040023057265348671');
        // 正确的发送格式:传入包含content和files的对象
        await channel.send({
            content: `Bem vindo à **Comunidade Extra Life**, ${member}! Espero que gostes da nossa companhia!`,
            files: ['outimage.png']
        });
    } catch (error) {
      console.error('Error:', error);
    }
});

方法二:直接使用Jimp Buffer发送(推荐)

无需保存图片到本地,直接将Jimp处理后的图片转为Buffer生成MessageAttachment,避免多成员同时加入时的文件覆盖问题:

const { MessageAttachment } = require('discord.js'); // 确保导入MessageAttachment

client.on('guildMemberAdd', async (member) => {
    try {
        // ... 你的Jimp图片处理代码保持不变 ...
        // 不需要writeAsync保存到本地,直接获取Buffer
        const imageBuffer = await image.getBufferAsync(Jimp.MIME_PNG);
        const attachment = new MessageAttachment(imageBuffer, 'welcome-image.png'); // 指定附件文件名
    
        const channel = member.guild.channels.cache.get('1040023057265348671');
        // 将Attachment放入files数组
        await channel.send({
            content: `Bem vindo à **Comunidade Extra Life**, ${member}! Espero que gostes da nossa companhia!`,
            files: [attachment]
        });
    } catch (error) {
      console.error('Error:', error);
    }
});

注意事项

  • 确保机器人对当前目录有读写权限(方法一需要)
  • 所有异步操作(channel.send()、Jimp的方法)都要加await,避免Promise未处理导致的异常
  • 方法二更高效,还能避免多个成员同时加入时,本地图片文件被覆盖的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:02:25