所以,我一直在开发一个 Discord 机器人,当然,我已经安装了 Lavalink 库。在我开始使用 DSharpPlus 中的自动分片客户端之前,它工作正常。它连接、加入和播放音乐。但是现在我已经实现了分片,它直接不起作用。我已经尝试了从使客户端静态化的感觉,因此我可以直接访问它并从每个分片中获取 Lavalink 客户端并使其像那样工作,但这不起作用。所以我坚持使用我的基本代码,这就是我将展示的内容,看看我是否能得到一些帮助。
这是在它执行播放命令的方法中
var lava = ctx.Client.GetLavalink();
Console.WriteLine("1");
Console.WriteLine("2");
var node = lava.ConnectedNodes.Values.First();
Console.WriteLine("3");
Console.WriteLine("node: " + node.IsConnected);
//var conn = node.GetGuildConnection(ctx.Member.VoiceState.Guild);
var conn = node.GetGuildConnection(ctx.Member.VoiceState.Guild);
Console.WriteLine("conn: " + conn.Guild);
Console.WriteLine("4");
await node.ConnectAsync(ctx.Member.VoiceState.Channel);
Console.WriteLine("5");
当然,现在它会到达它写入节点的连接状态的点,这是真的,然后它会在它到达它应该写入公会的点时抛出一个空引用异常连接至。我不确定这是否是连接时的,但我猜它可能是连接时的。
即便如此,我删除了它,它到达了输出 4 的点,然后就是不连接,也没有达到 5。即使在它连接的时候(由于我不记得的原因)它只是说conn
变量等于空。
总之,conn
等于null,现在我使用的是分片客户端,它只是没有连接。
我不知道发生了什么,我需要一些帮助,因为我已经坚持了几天了。