c#Discord Bot在命令延迟期间不能使用命令

时间:2018-04-02 18:55:26

标签: c# command discord discord.net

我一直在搞乱Discord机器人而且我一直在努力创造自己的机器人,但是,我遇到了一个问题。其中一个机器人'命令说了些什么,等了一会儿,然后删除了它的消息。问题不在于该命令,而是执行其他命令。当您执行该命令并处于该一分钟等待期并尝试执行另一个命令时,机器人不会执行该第二个命令。一旦等待一分钟结束,它只会执行它。

以下是该命令的代码:

    [Command("test")]
    public async Task PlayAsync()
    {
        string text = "Message To Delete"; //text that bot shows
        var m = await ReplyAsync(text); //bot displays text
        const int delay = 10000; //delay to wait
        await Task.Delay(delay); //starting delay
        await Context.Message.DeleteAsync(); //deleting messages after delay
        await m.DeleteAsync();
    }

现在,当您执行该命令并尝试执行另一个命令时,机器人不会接收/执行该第二个命令。我不确定为什么这是因为它们是两个不同的命令,如果有人对此有所了解,我会采取任何措施。

1 个答案:

答案 0 :(得分:1)

[Command("test", RunMode = RunMode.Async)]
public async Task PlayAsync()
{
    string text = "Message To Delete"; //text that bot shows
    var m = await ReplyAsync(text); //bot displays text
    const int delay = 10000; //delay to wait
    await Task.Delay(delay); //starting delay
    await Context.Message.DeleteAsync(); //deleting messages after delay
    await m.DeleteAsync();
}

虽然PlayAsync是异步运行的,但该命令仍在同步运行。添加Runmode = RunMode.Async应该可以解决问题。