c# Discord Bot 在命令延迟期间不会接受命令
c# Discord Bot Won't Take Commands During Command Delay
我一直在摆弄 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();
}
现在,当您执行该命令并尝试执行另一个命令时,第二个命令不是 received/executed 机器人发出的。我不确定为什么会这样,因为它们是两个不同的命令,如果有人对此有所了解,我会采取任何措施。
[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
应该可以解决问题。
我一直在摆弄 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();
}
现在,当您执行该命令并尝试执行另一个命令时,第二个命令不是 received/executed 机器人发出的。我不确定为什么会这样,因为它们是两个不同的命令,如果有人对此有所了解,我会采取任何措施。
[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
应该可以解决问题。