示例#1
0
        public JoinChannelResult JoinChannel(Plugins.IMessage message)
        {
            var voicech = (message.Original.Author as SocketGuildUser).VoiceChannel;

            lock (state_lock_bject) {             // LOCK STATE
                if (this.state.TextChannelIds.Count > 0 || this.state.VoiceChannelId != 0)
                {
                    return(new JoinChannelResult()
                    {
                        State = JoinChannelState.AlreadyJoined
                    });
                }
                if (voicech == null)
                {
                    return(new JoinChannelResult()
                    {
                        State = JoinChannelState.WhereYouAre
                    });
                }
                var t = this.voice.Connect(voicech);
                this.state.TextChannelIds.Add(message.Original.Channel.Id);
                this.state.VoiceChannelId = voicech.Id;
                this.state.Joined         = true;
                return(new JoinChannelResult()
                {
                    State = JoinChannelState.Succeed, VoiceChannelName = voicech.Name
                });
            }
        }
示例#2
0
 public LeaveChannelResult LeaveChannel(Plugins.IMessage message)
 {
     lock (state_lock_object) {            // LOCK STATE
         var t   = this.voice.Disconnect();
         var ret = this.state.Joined ? LeaveChannelResult.Succeed : LeaveChannelResult.NotJoined;
         this.state.Leave();
         return(ret);
     }
 }
示例#3
0
 public LeaveChannelResult LeaveChannel(Plugins.IMessage message)
 {
     lock (state_lock_bject) {            // LOCK STATE
         var t   = this.voice.Disconnect();
         var ret = this.state.Joined ? LeaveChannelResult.Succeed : LeaveChannelResult.NotJoined;
         this.state.TextChannelIds = new List <ulong>();
         this.state.VoiceChannelId = 0;
         this.state.Joined         = false;
         return(ret);
     }
 }
示例#4
0
 public RemoveChannelResult RemoveChannel(Plugins.IMessage message)
 {
     lock (state_lock_object) {             // LOCK STATE
         if (!this.state.Joined)
         {
             return(RemoveChannelResult.NotJoined);
         }
         if (this.state.RemoveTextChannel(message.Original.Channel))
         {
             return(RemoveChannelResult.Succeed);
         }
         return(RemoveChannelResult.AlreadyRemoved);
     }
 }
示例#5
0
 public AddChannelResult AddChannel(Plugins.IMessage message)
 {
     lock (state_lock_bject) {             // LOCK STATE
         if (!this.state.Joined)
         {
             return(AddChannelResult.NotJoined);
         }
         if (!this.state.TextChannelIds.Contains(message.Original.Channel.Id))
         {
             this.state.TextChannelIds.Add(message.Original.Channel.Id);
             return(AddChannelResult.Succeed);
         }
         return(AddChannelResult.AlreadyAdded);
     }
 }
示例#6
0
        public JoinChannelResult JoinChannel(Plugins.IMessage message)
        {
            var gu = message.Original.Author as SocketGuildUser;
            var gc = (message.Original.Channel as SocketGuildChannel);

            if (gu == null || gc == null)
            {
                return(new JoinChannelResult()
                {
                    State = JoinChannelState.WhereYouAre
                });
            }
            var voicech = gu.VoiceChannel;

            lock (state_lock_object) {             // LOCK STATE
                if (this.state.Joined)
                {
                    return(new JoinChannelResult()
                    {
                        State = JoinChannelState.AlreadyJoined
                    });
                }
                if (voicech == null)
                {
                    return(new JoinChannelResult()
                    {
                        State = JoinChannelState.WhereYouAre
                    });
                }
                var t = this.voice.Connect(voicech);
                this.state.Join(message.Original.Channel, voicech, gc.Guild, this.discord.CurrentUser.Id);
                return(new JoinChannelResult()
                {
                    State = JoinChannelState.Succeed, VoiceChannelName = voicech.Name
                });
            }
        }