如何检查Discord.Net机器人是否已连接到语音通道

时间:2020-02-15 20:36:05

标签: c# asynchronous audio console discord.net

我的机器人可以加入并离开语音通道而不会出现问题,但是我如何验证它是否已连接到语音聊天?

我的音频服务.cs文件中的代码

public async Task<IAudioClient> ConnecttoVC(SocketCommandContext ctx)
        {
            SocketGuildUser user = ctx.User as SocketGuildUser;
            IVoiceChannel chnl = user.VoiceChannel;
            if(chnl == null)
            {
                await ctx.Channel.SendMessageAsync("Not connected!");
                return null;
            }
            await ctx.Channel.SendMessageAsync("Joining Voice!");
            return await chnl.ConnectAsync();
        }

2 个答案:

答案 0 :(得分:0)

因此,我正在使用VoiceChannel的{​​{1}}属性来检查僵尸程序是否已连接,并且僵尸程序在加入和退出同时或根本没有加入时遇到问题。因此,我决定只向我的班级添加一个bool变量,它对我有用。

.CurrentUser

在我的private bool voiceCheck; public AudioService() { voiceCheck = false; } public async Task<IAudioClient> ConnecttoVC(SocketCommandContext ctx) { SocketGuildUser user = ctx.User as SocketGuildUser; IVoiceChannel chnl = user.VoiceChannel; if(chnl == null) { await ctx.Channel.SendMessageAsync("Not connected!"); return null; } if(voiceCheck == true) { await ctx.Channel.SendMessageAsync("Already connected!"); return null; } await ctx.Channel.SendMessageAsync("Joining Voice!"); voiceCheck = true; return await chnl.ConnectAsync(); } ConnecttoVC(省略)方法之间,voiceCheck会在分别检查每个方法时在true和false之间切换。

答案 1 :(得分:0)

我知道您说过,您在使用VoiceChannel的{​​{1}}属性使机器人加入和退出时遇到问题,但是我需要我的机器人知道它是否与执行用户的用户位于同一频道命令。因此,我采用了该方法,到目前为止,在测试时没有任何问题。我以为我可以在这里与其他任何试图解决该问题的人分享我的代码。我已经注释了代码,因此希望它应该易于理解。

CurrentUser