【问题标题】:c# Discord Bot Won't Take Commands During Command Delayc# Discord Bot 在命令延迟期间不会执行命令
【发布时间】:2018-09-12 00:17:50
【问题描述】:

我一直在搞乱 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();
    }

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

【问题讨论】:

    标签: c# command discord discord.net


    【解决方案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 应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 2020-10-30
      • 2020-09-03
      • 2021-11-07
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      • 2019-04-05
      • 2018-03-04
      相关资源
      最近更新 更多