C#制作一个不和谐的机器人无法想出一个制作冷却的方法

时间:2018-01-18 01:06:30

标签: c# discord

我试图在命令之间冷静下来以阻止程序被垃圾邮件发送,我无法弄清楚如何做到这一点。从理论上讲,至少从我的观点来看,这应该是有用的,如果有人对此有答案或更好的方法,我会很感激。

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;
    }
}

1 个答案:

答案 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);
}