我一直在搞乱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();
}
现在,当您执行该命令并尝试执行另一个命令时,机器人不会接收/执行该第二个命令。我不确定为什么这是因为它们是两个不同的命令,如果有人对此有所了解,我会采取任何措施。
答案 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
应该可以解决问题。