Как проверить, подключен ли мой бот Discord. Net к голосовому каналу? - PullRequest
0 голосов
/ 15 февраля 2020

Мой бот может присоединиться и оставить голосовой канал без проблем, но как мне проверить, если он уже подключен к голосовому чату?

Код из моего аудио-сервиса .cs file

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();
        }

1 Ответ

0 голосов
/ 17 февраля 2020

Итак, я использовал VoiceChannel свойство .CurrentUser, чтобы проверить, подключен ли бот или нет, и у меня возникли проблемы с присоединением и уходом бота одновременно или вообще без подключения. Поэтому я решил просто добавить переменную bool в мой класс, и она работает для меня.

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 и Leave (опущено) методами voiceCheck будет переключаться между true и false при проверке для каждого соответственно.

...