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 - 上传本地图像的主要内容,如果未能解决你的问题,请参考以下文章