Discord机器人在调试时断开连接

时间:2020-10-17 22:34:53

标签: c# .net .net-core discord.net

我在Discord.Net中编写了一个机器人,该机器人检查了我的世界服务器上的在线播放器,但是当我调试我的机器人并从Discord向其提供服务器时,出现错误: MessageReceived处理程序阻止了网关任务。大约一分钟后,机器人断开连接: System.Exception:服务器错过了上一个心跳 在Discord.ConnectionManager中。<> c__DisplayClass29_0。 d.MoveNext()和下一个 Disconnecting 如何解决?这是我的代码:

public async Task MessageReceivedAsync(SocketMessage message)
        {
            if (message.Author.Id == client.CurrentUser.Id)
                return;
            await message.Channel.SendMessageAsync("Adding server");
            while (true)
            {
                if ((message.Content.StartsWith(@"\serwer ") || message.Content.StartsWith(@"\server ")) && !message.Content.EndsWith(".") && message.Content.Contains("."))
                {
                    var url = message.Content.ToString();
                    if(url.StartsWith(@"\server "))
                    {
                        url = url.Replace(@"\server ", "");
                    }
                    else
                    {
                        url = url.Replace(@"\serwer ", "");
                    }
                    try
                    {
                        IMinecraftPinger pinger = new MinecraftPinger(url, 25565);
                        var status = await pinger.PingAsync();
                        if (status != null)
                        {
                            await client.SetGameAsync(status.Players.Online.ToString() + "/" + status.Players.Max.ToString());
                        }
                    }
                    catch
                    {
                        await client.SetGameAsync("Serwer offline :(");
                    }
                await Task.Delay(15000);
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

我最近遇到了类似这个问题。

我的不和谐机器人会收到一个命令,在未来的某个时间,我会调用一个独立的函数向不和谐频道发送消息。我的机器人很快就会断开连接并重新连接,但不会完成发送消息。

在 DiscordSocketClient 上调用 await async 函数(如 SendMessageAsync)时会出现此问题。我认为当您不在命令内部工作时调用这样的函数是问题所在。无论如何,从异步客户端函数调用中删除等待修复了断开连接,从而允许我的