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

如何在discord.py机器人的embed嵌入消息中使用本地存储的图片?

实现方法

你需要的效果完全可以实现,不需要依赖外部图床,核心逻辑是先将本地图片作为消息附件上传,再通过Discord内置的附件引用规则关联到embed中,操作步骤如下:

  • 使用discord.File加载本地图片文件,可指定上传后显示的文件名,该名称后续会用于关联embed
  • 调用embed的set_image方法时,传入格式为attachment://<上传文件名>的地址
  • 发送消息时,将加载好的discord.File对象和embed一同发送
完整代码示例
import discord
from discord.ext import commands

# 这里Intents根据你实际启用的权限调整即可,不需要全量开启
bot = commands.Bot(command_prefix="!", intents=discord.Intents.default())

@bot.command()
async def foo(ctx):
    # 加载本地图片,第二个参数为上传到Discord后的自定义文件名
    # 如果省略filename参数,默认使用本地文件的原名
    local_img = discord.File("./本地图片路径.png", filename="embed_img.png")
    
    embed = discord.Embed(title="测试本地图片嵌入")
    # 引用附件时使用 attachment:// 前缀加上刚才设置的filename
    embed.set_image(url="attachment://embed_img.png")
    
    # 发送时必须同步传入file参数,携带本地图片对象
    await ctx.send(embed=embed, file=local_img)

bot.run("你的机器人Token")
注意事项
  • 本地路径支持绝对路径和相对路径,使用相对路径时需要注意和机器人运行时的工作目录匹配
  • 如果需要同时嵌入多张本地图片,将所有discord.File对象放入列表,发送时传入files=[img1, img2]参数即可
  • 该方法同样适用于embed的缩略图、作者头像等所有需要传入图片URL的embed字段

内容的提问来源于stack exchange,提问作者Science done right

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:57:03