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

从SQLite3数据库获取图片在Discord Embed中无法显示的问题

Discord嵌入图片不显示的排查与解决

核心问题分析

  • 文件名不匹配:代码中创建discord.File时指定的文件名是picture.png,但嵌入里引用的是oc_picture.png,Discord无法找到对应附件,导致图片无法渲染。
  • 未传递文件对象:仅返回Embed对象,发送消息时没有附带创建的discord.File,Discord服务器接收不到图片数据,自然无法显示。

修复后的完整代码

def init_embed(title, description, colour, picture):
    # 创建discord.File对象,确保文件名与后续引用一致
    file = discord.File(BytesIO(picture), filename='picture.png')

    embed = discord.Embed(title=title,
                          description=description,
                          colour=colour)

    # 使用和File对象完全一致的文件名引用附件
    embed.set_image(url="attachment://picture.png")
   
    # 同时返回embed和file对象,发送时需一起传递
    return embed, file

发送消息的正确用法

调用函数后,必须在发送消息时同时传入Embed和File对象:

# 示例:通过命令上下文发送
embed, file = init_embed("示例标题", "示例描述", discord.Colour.blue(), picture_data)
await ctx.send(embed=embed, files=[file])

# 或通过频道对象发送
# await channel.send(embed=embed, files=[file])

额外验证步骤

  • 确认从SQLite3获取的picture是完整的图片二进制数据:可以先写入本地文件验证是否能正常打开
    with open("test_verify.png", "wb") as f:
        f.write(picture)
    
  • 确保图片格式为Discord支持的类型(PNG、JPG等),如果是其他格式,需同步修改filename的后缀(如picture.jpg)并保持引用一致。

内容的提问来源于stack exchange,提问作者Chris Ze Third

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:04:52