【发布时间】:2023-03-10 00:00:01
【问题描述】:
我最近一直在研究我的不和谐机器人,我想创建一个命令,从给定数组发送 随机 照片。目前我有这个代码:
[Command("sendpic"), Summary("")]
public async Task SendPic()
{
string[] RandomPic = { "https://images.unsplash.com/photo-1536746803623-cef87080bfc8?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1000&q=80",
"https://s3.amazonaws.com/artallnight/static/files/2018/08/14154730/back-1024x532.jpg",
"https://www.abc.net.au/news/image/9776766-3x2-700x467.jpg",
"https://static1.squarespace.com/static/58d2d1d003596ef5151dd694/t/5911277b893fc011d4e8543d/1494296445782/stars2.jpg?format=1500w"
};
Random random = new Random();
int randomNumber = random.Next(0, 3);
EmbedBuilder d = new EmbedBuilder();
d.WithColor(120, 40, 23);
if (randomNumber == 1)
{
await Context.Channel.SendMessageAsync(RandomPic[1]);
} else if (randomNumber == 2) {
await Context.Channel.SendMessageAsync(RandomPic[2]);
} else if (randomNumber == 3){
await Context.Channel.SendMessageAsync(RandomPic[3]);
} else {
await Context.Channel.SendMessageAsync(RandomPic[0]);
}
}
但它似乎不起作用,因为每当我调用“sendpic”命令时它只发送一张图片。我如何使它从数组中发送给定的图片(每次通话时都发送一张?)
【问题讨论】:
-
为什么要查看
randomNumber的值?您可以简单地在数组中使用randomNumber。Context.Channel.SendMessageAsync(RandomPic[randomNumber]);。我还建议在函数之外初始化随机对象。很有可能您总是会得到相同的图片,请参阅this。此外,您生成的数字介于 0 和 2 之间,因为 MaxValue 是独占。 -
顺便说一句,
random.Next(0, 3)永远不会返回 3。maxValue是独占的,如果您希望得到 3,则需要编写random.Next(0, 4)。 -
好吧,看来我已经解决了这个问题。它现在还给了其他图片。感谢您的帮助!
标签: c# asp.net asp.net-core discord