如何在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
相关产品推荐
相关产品推荐

