You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Discord.js中如何实现消息与图片的跨频道转发?

实现跨频道转发文字与图片消息

嘿,我来帮你搞定这个图片转发的问题~你之前的代码只能处理纯文字,是因为没考虑到Discord里图片通常是以附件或者嵌入内容的形式存在的,不是单纯的文本内容。下面给你具体的实现思路和代码:

1. 核心逻辑拆解

你原来的message.channel.send(message.content)只传了文本,但用户发的图片要么是本地上传的附件,要么是外链图片被Discord自动解析成的嵌入消息。所以转发时得把这几部分内容都带上才行。

2. 完整代码示例

首先你得先拿到要转发到的目标频道(比如用频道ID获取),然后这样写:

// 先获取目标频道,把YOUR_TARGET_CHANNEL_ID换成你实际的频道ID
const targetChannel = client.channels.cache.get('YOUR_TARGET_CHANNEL_ID');
if (!targetChannel) {
  console.log('找不到目标频道哦');
  return;
}

// 执行转发,同时传递文本、附件和嵌入内容
targetChannel.send({
  content: message.content, // 保留原消息的文字内容
  files: message.attachments.map(att => att.url), // 提取所有附件(图片、文件都能处理)
  embeds: message.embeds // 带上原消息里的嵌入内容(比如外链图片的预览)
});

3. 几个小细节要注意

  • 权限问题:得确保你的机器人在源频道和目标频道都有「发送消息」和「上传文件」的权限,不然转发会失败。
  • 多种图片场景:不管是用户直接上传的本地图片(会变成附件),还是发的图片链接(Discord自动生成嵌入),这段代码都能处理到。
  • 过滤图片(可选):如果你只想转发图片,不想转其他文件,可以加个判断过滤文件类型,比如:
    files: message.attachments.filter(att => att.contentType.startsWith('image/')).map(att => att.url)
    

这样改完之后,不管是纯文字消息还是带图片的消息,都能完整转发到目标频道啦~

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

火山引擎 最新活动