我刚刚开始编码c#,我正在为我的discord服务器制作一个Bot。我最近添加了一个命令!meme,它将从大约100张不同的图片中随机抽取,以便在聊天中发送。第二个我实现了这个命令,每个人都完全滥用了它,而且由于发生了“meme spam”,每2秒就有15张图片在聊天中弹出。
我希望能够在命令本身再次使用之前添加3秒延迟。我尝试使用Thread.Sleep(3000);
但是没有用。同样的
等待我在异步中使用的Task.Delay(3000);
。
private void RegisterMemeCommand()
{
commands.CreateCommand("Meme")
.Do(async (e) =>
{
int RandomMeme = rng.Next(MemeList.Length);
string memetopost = MemeList[RandomMeme];
await e.Channel.SendFile(memetopost);
});
}
答案 0 :(得分:0)
由于我没有完整的代码,请根据您的问题,试试这个:
var lastSentOn=DateTime.MinValue;
commands.CreateCommand("Meme")
.Do(async (e) =>
{
if((DateTime.Now - lastSentOn).TotalSeconds > 3)
{
int RandomMeme = rng.Next(MemeList.Length);
string memetopost = MemeList[RandomMeme];
lastSentOn = DateTime.Now;
await e.Channel.SendFile(memetopost);
}
});
您可能需要将lastSentOn
与某些用户ID相关联。在这种情况下,字典会有所帮助。