discord.py的Embed嵌入消息添加本地文件失败,如何修复对应代码?
问题排查&修正方案
你的代码存在3个核心错误,按优先级修改即可:
- 命令装饰器语法错误
@client.command是未完成的装饰器写法,必须补充括号才会完成命令注册,正确写法为@client.command() - Embed引用本地文件的格式错误
Embed的set_image方法不支持读取你本地磁盘的绝对路径,你已经将图片作为附件上传,需要用attachment://<上传时指定的filename>格式引用附件,这里你上传时指定了filename为image.jpg,所以url应该填attachment://image.jpg - Windows路径转义风险
Windows下路径的反斜杠\会被Python识别为转义字符,需要在路径字符串前加r标记为原始字符串,避免转义异常。
修正后完整代码
import discord from discord.ext import commands # 补充intents配置,避免2.0+版本discord.py权限校验失败 client = commands.Bot(command_prefix="!", intents=discord.Intents.all()) @client.command() async def pika(ctx): # 加r标记为原始字符串,避免转义错误 file = discord.File(r"E:\Python\discord.py\Pikachu1.jpg", filename="image.jpg") embed = discord.Embed(color=0xFFFFFF) # 用attachment协议引用已上传的附件 embed.set_image(url="attachment://image.jpg") await ctx.send(file=file, embed=embed) client.run("你的机器人令牌")
补充说明:如果使用2.0及以上版本的discord.py,除了代码中配置intents,还需要在Discord开发者后台的机器人设置页开启对应权限开关,否则命令会无响应。
内容的提问来源于stack exchange,提问作者Shreyas Patil
相关产品推荐
相关产品推荐

