我试图在命令之间冷静下来以阻止程序被垃圾邮件发送,我无法弄清楚如何做到这一点。从理论上讲,至少从我的观点来看,这应该是有用的,如果有人对此有答案或更好的方法,我会很感激。
if (message.HasStringPrefix("!", ref argPos) || message.HasMentionPrefix(_client.CurrentUser, ref argPos))
{
var cooldownSet = DateTime.Now;
if ((DateTime.Now - cooldownSet).Seconds >= 1)
{
var context = new SocketCommandContext(_client, message);
var result = await _commands.ExecuteAsync(context, argPos, _services);
if (!result.IsSuccess)
Console.WriteLine("{" + DateTime.Now.ToString() + "} - " + result.ErrorReason);
}
else
{
return;
}
}
答案 0 :(得分:0)
由于您显然位于异步方法中,因此可以使用Task.Delay等待一段时间,然后执行命令。
if (message.HasStringPrefix("!", ref argPos) || message.HasMentionPrefix(_client.CurrentUser, ref argPos)) {
// will delay for 1 second
await Task.Delay(1000);
var context = new SocketCommandContext(_client, message);
var result = await _commands.ExecuteAsync(context, argPos, _services);
if (!result.IsSuccess)
Console.WriteLine("{" + DateTime.Now.ToString() + "} - " + result.ErrorReason);
}