djs v12 如何在embed中展示带嵌入内容的图片/gif URL
解决方法
你可以通过正则匹配提取消息文本内的图片/GIF格式URL,调整Embed的图片赋值逻辑即可实现需求,修改后的代码如下:
// 匹配图片/GIF链接的正则,覆盖主流图片格式 const imgUrlRegex = /https?:\/\/\S+\.(?:png|jpg|jpeg|gif|webp)/gi // 提取消息内容中的符合规则的图片链接 const matchedImgs = message.content.match(imgUrlRegex) || [] // 优先级:用户上传的附件图片 > 消息文本内的第一张匹配到的图片链接 const targetImgUrl = message.attachments.size > 0 ? message.attachments.first().url : matchedImgs.length > 0 ? matchedImgs[0] : null const embed = new MessageEmbed() .setDescription(message.content) .setColor("#E74C3C") .setTimestamp() .setImage(targetImgUrl) .setAuthor( message.author.tag, message.author.displayAvatarURL({ dynamic: true }) )
逻辑说明
- 正则会自动识别消息文本中后缀为png、jpg、jpeg、gif、webp的HTTP/HTTPS资源链接,匹配到的链接会自动嵌入到Embed内部,和附件图片的展示效果一致
- 没有匹配到任何有效图片资源时,Embed不会显示图片字段
- 单条Discord Embed仅支持展示1张主图,如果需要同时展示多张图片,可额外调用
setThumbnail方法设置缩略图,或一次性发送多条Embed
内容的提问来源于stack exchange,提问作者ignshifts
相关产品推荐
相关产品推荐

