C# Discord Bot - 上传本地图像

Posted

技术标签:

【中文标题】C# Discord Bot - 上传本地图像【英文标题】:C# Discord Bot - Upload Local Image 【发布时间】:2018-10-22 02:24:13 【问题描述】:

我使用 C# 创建了这个机器人来帮助我的联盟在手机游戏中脱颖而出。我们正在使用不和谐进行交流。我的机器人的功能之一是设置“Raid Lane”,这样人们就可以声称他们将要走的路。我们的联盟在我们的不和谐中散布了一个图像集,我希望在机器人为该难度设置突袭通道时发布每个突袭的相关图像。目前我有:

var embed = new EmbedBuilder();
            embed.WithTitle("Ultimus Raid - Level 40");

embed.WithImageUrl("https://cdn.discordapp.com/attachments/430797829078908928/441255069518921728/Lvl40raid.png");

await ReplyAsync("", false, embed);

这有点用。我可以看到图片,但有时在我离开并重新打开 discord 后,我看到的只是标题。在我的程序运行的后端有一个 websocket 错误。我试图通过使用本地图像而不是来自 url 来解决这个问题,以防万一出现问题。我没有运气让我的机器人发布本地图像。我试过了

embed.WithImageUrl("C:/Users/Administrator/Desktop/DiscordBot/Pictures/Lvl40raid.png");

以及用 \ 代替 /。还尝试了embed.ImageUrl = ... 命令。

【问题讨论】:

【参考方案1】:

这对我有用(使用 discord.net):

var guild = _client.Guilds.Single(g => g.Name == "guild name");
var channel = guild.TextChannels.Single(ch => ch.Name == "channel name");
await channel.SendFileAsync("C:\\Pictures\\something.png","Caption goes here");

【讨论】:

谢谢,这为我指明了正确的方向。我的命令在不同的模块中,所以我无法访问客户端来分解公会和频道。但由于模块设置为采用 SocketCommandContext,我能够将上下文拆分为客户端和消息。最终为我工作的是 await Context.Channel.SendFileAsync("file\\location","Title",false,null)【参考方案2】:

虽然Paul's answer 将完成工作,但如果您想在调用机器人的频道中发送文件,您可以使用:

await Context.Channel.SendFileAsync("FILEPATH", "CAPTION");

【讨论】:

以上是关于C# Discord Bot - 上传本地图像的主要内容,如果未能解决你的问题,请参考以下文章

Discord Bot (C#) 问题加入语音频道

Discord C# Bot - 删除最新消息

角色反应 Discord Bot

C# Discord Bot,尝试为命令包含 API

Discord Python Bot - Bot 的消息不会自动嵌入链接/图像/等

discord bot c# 读取收到的直接消息