C# 使用Discord.Net如何向Embed嵌入本地图片而无需上传外部图床
本地文件作为Embed图片实现方案
核心逻辑
你现有代码的实现思路是正确的,仅需要调整attachment://后的拼接内容:该地址仅允许填写你要上传的文件名称,不能传入本地完整路径。
修正后代码
// 提取文件的纯文件名(不带本地路径前缀) var fileName = Path.GetFileName(path); var emb = new EmbedBuilder() .WithColor(Color.Blue) .WithTimestamp(DateTime.Now) .WithTitle(rarity) .WithDescription($"{Context.User.Username} dropped a card!") // 此处仅拼接提取到的纯文件名即可 .WithImageUrl($"attachment://{fileName}") .Build(); // 第一个参数仍使用你原本的本地文件路径 await Context.Channel.SendFileAsync(path, null, false, emb);
注意事项
- 如果代码提示
Path类不存在,需要在代码顶部引入using System.IO;命名空间 - 确保传入
SendFileAsync的路径可以正常访问到目标本地文件,权限、路径拼写无误 attachment://后拼接的文件名必须和你上传的文件实际名称完全一致,大小写也要匹配,否则Discord无法将附件和Embed的图片关联- 该方案不需要将文件上传到第三方图床,完全走本地附件上传逻辑,适合图片频繁更新的场景
内容的提问来源于stack exchange,提问作者Viuツ
相关产品推荐
相关产品推荐

