public MessageEventArgs(string nickName, string message, string userid, string id, string chanel, ExMsgFlag flags = ExMsgFlag.None, string crid = "")
 {
     NickName       = nickName;
     Message        = message;
     ID             = id;
     Chanel         = chanel;
     Flags          = flags;
     UserID         = userid;
     CustomRewardID = crid;
 }
Exemple #2
0
        private void WSock_MessageReceived(object sender, WebSocketSharp.MessageEventArgs e)
        {
            //Console.WriteLine(e.Data);
            if (e.Data.Contains(":tmi.twitch.tv CAP * ACK :twitch.tv/tags twitch.tv/commands"))
            {
                WSock.Send("JOIN #" + Streamer);
                new Task(() => {
                    if (!string.IsNullOrEmpty(ConnectMessage))
                    {
                        Thread.Sleep(200);
                        SendMessage(ConnectMessage);
                    }
                }).Start();
            }
            else if (e.Data.Contains("PING :tmi.twitch.tv"))
            {
                WSock.Send("PONG");
            }
            else if (Listener)
            {
                bool davulf = false;
                if (e.Data.Contains("PRIVMSG") || ((davulf = e.Data.Contains("USERSTATE")) && !string.IsNullOrWhiteSpace(SendedMessage)))
                {
                    string data = e.Data.Trim();
                    if (davulf)
                    {
                        data         += " :" + SendedMessage;
                        SendedMessage = "";
                    }
                    string    nick = "", id = "", userid = "", chanel = "", crid = "";
                    string[]  splited = data.Split(';');
                    ExMsgFlag msgflag = ExMsgFlag.None;
                    foreach (var x in splited)
                    {
                        string[] datargs = x.Split('=');
                        if (datargs.Length == 2)
                        {
                            switch (datargs[0])
                            {
                            case "display-name":
                                nick = datargs[1];
                                break;

                            case "id":
                                id = datargs[1];
                                break;

                            case "user-id":
                                userid = datargs[1];
                                break;

                            case "room-id":
                                chanel = datargs[1];
                                break;

                            case "badges":
                                foreach (var bad in datargs[1].Split(','))
                                {
                                    switch (bad.Split('/')[0])
                                    {
                                    case "vip":
                                        msgflag |= ExMsgFlag.FromVip;
                                        break;

                                    case "glhf-pledge":
                                        msgflag |= ExMsgFlag.HasGLHF;
                                        break;

                                    case "subscriber":
                                        break;

                                    case "premium":
                                        msgflag |= ExMsgFlag.HasPrime;
                                        break;
                                    }
                                }
                                break;

                            case "msg-id":
                                switch (datargs[1])
                                {
                                case "highlighted-message":
                                    msgflag |= ExMsgFlag.Highlighted;
                                    break;

                                case "skip-subs-mode-message":
                                    msgflag |= ExMsgFlag.SubModeSkiped;
                                    break;
                                }
                                break;

                            case "custom-reward-id":
                                crid = datargs[1];
                                break;

                            case "turbo":
                                if (datargs[1] == "1")
                                {
                                    msgflag |= ExMsgFlag.HasTurbo;
                                }
                                break;

                            case "mod":
                                if (datargs[1] == "1")
                                {
                                    msgflag |= ExMsgFlag.FromModer;
                                }
                                break;

                            case "subscriber":
                                if (datargs[1] == "1")
                                {
                                    msgflag |= ExMsgFlag.FromSub;
                                }
                                break;
                            }
                        }
                    }
                    OnMessage.Invoke(this,
                                     new MessageEventArgs(nick, data.Split(new string[] { "#" + Streamer + " :" }, StringSplitOptions.RemoveEmptyEntries).Last(), userid, id, chanel, msgflag, crid));
                }
                else if (e.Data.Contains("CLEARCHAT"))
                {
                    int      duration = 0;
                    string[] splited  = e.Data.Split(';');
                    foreach (var x in splited)
                    {
                        string[] datargs = x.Split('=');
                        if (datargs.Length == 2)
                        {
                            switch (datargs[0])
                            {
                            case "@ban-duration":
                                int.TryParse(datargs[1], out duration);
                                break;
                            }
                        }
                    }
                    string userName = e.Data.Split(new string[] { "CLEARCHAT #" + Streamer + " :" }, StringSplitOptions.RemoveEmptyEntries).Last();
                    OnBan.Invoke(this, new BanEventArgs(userName.Trim(), duration, BanType.BanOrTimeout));
                }
                else if (e.Data.Contains("CLEARMSG"))
                {
                    string   userName = "", MsgID = "";
                    string[] splited = e.Data.Split(';');
                    foreach (var x in splited)
                    {
                        string[] datargs = x.Split('=');
                        if (datargs.Length == 2)
                        {
                            switch (datargs[0])
                            {
                            case "@login":
                                userName = datargs[1];
                                break;

                            case "target-msg-id":
                                MsgID = datargs[1];
                                break;
                            }
                        }
                    }
                    string Msg = e.Data.Split(new string[] { "CLEARMSG #" + Streamer + " :" }, StringSplitOptions.RemoveEmptyEntries).Last();
                    OnBan.Invoke(this, new BanEventArgs(userName.Trim(), Msg, MsgID, BanType.MsgDelete));
                }
            }
        }