c#Discord Bot在命令延迟期间不会执行命令

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

Here's the code to the command:

[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)

2 years ago

[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 应该可以解决问题 .