예제 #1
0
파일: IRC.cs 프로젝트: Techial/TechBot
        private static void IrcClient_Process(object sender,
                                              IrcRawMessageEventArgs e)
        {
            ThreadPool.QueueUserWorkItem(
                new WaitCallback(delegate(object state) {
                try {
                    string[] strlist = e.RawContent.Split(" ");
                    if (strlist[2] == "PRIVMSG")
                    {
                        string[] modes = strlist [0]
                                         .Split(";");
                        int i           = 0;
                        bool isMod      = false;
                        string username = "";
                        foreach (string r in modes)
                        {
                            if (r.Contains("mod="))
                            {
                                string IsMod = r.Split("=")[1];
                                // IsMod = IsMod.Remove(IsMod.Length - 1);
                                if (IsMod == "1")
                                {
                                    isMod = true;
                                }
                            }
                            else if (r.Contains("display-name="))
                            {
                                username = r.Split("=")[1];
                            }
                            i++;
                        }

                        // Channel      = String    channelName
                        // Username     = String    username
                        // Message      = String    message
                        // Is User mod? = Boolean   isMod

                        string channelName = strlist [3]
                                             .Substring(1);
                        string message = strlist [4]
                                         .Substring(1);

                        if (username.ToLower() == channelName.ToLower())
                        {
                            isMod = true;
                        }

                        Log.Logger.OutputToConsole("[{0}] {1}: {2}", strlist[3], username,
                                                   message);

                        TechBot.Objects.Channel Channel = FindChannel(channelName);
                        TechBot.Objects.User tempUser   = Channel.FindUser(username);

                        if (tempUser == null)
                        {
                            tempUser = new TechBot.Objects.User(username, channelName);
                        }

                        Channel.UserJoined(tempUser);

                        Channel.ChatMessageReceived(tempUser, isMod, message);
                    }
                    else
                    {
                        // Log.Logger.OutputToConsole(e.RawContent);
                    }
                } catch {
                }
            }),
                null);
        }
예제 #2
0
파일: Startup.cs 프로젝트: papci/BipBipBot
 private void ClientOnRawMessageReceived(object?sender, IrcRawMessageEventArgs e)
 {
 }
예제 #3
0
 private void IrcClient_RawMessageReceived(object sender, IrcRawMessageEventArgs e)
 => MessageReceived?.Invoke($"RAW: {e.RawContent}");
예제 #4
0
        void IrcClient_RawMessageReceived(object sender, IrcRawMessageEventArgs e)
        {
            if (OnNewMessagesArrived != null)
            {
                string   prefix, command;
                string[] parameters;
                ParseIrcMessageWithRegex(e.RawContent, out prefix, out command, out parameters);
                List <ChatMessage> msgs     = new List <ChatMessage>();
                string             username = getUserName(prefix);

                dots += ".";
                if (dots.Length > 3)
                {
                    dots = "";
                }

                //msgs.Add(new ChatMessage() {
                //               Date = DateTime.Now,
                //               Name = "RAW",
                //               Text = e.RawContent
                //});

                // System.IO.File.AppendAllText("x:\\twitch.log", e.RawContent + "\r\n");


                switch (command)
                {
                case "PART":
                case "JOIN":
                    Header = "http://twitch.tv, " + StreamerNick + dots;
                    break;

                case "PRIVMSG":
                    Header = "http://twitch.tv, " + StreamerNick;
                    if (username != "Jtv")
                    {
                        msgs.Add(new ChatMessage()
                        {
                            Date = DateTime.Now,
                            Name = username,
                            Text = parameters[1]
                        });
                    }
                    else
                    {
                        //msgs.Add(new ChatMessage() {
                        //    Date = DateTime.Now,
                        //    Name = "SYSTEM",
                        //    Text = parameters[1]
                        //});
                    }
                    break;

                    //case "+":
                    //    msgs.Add(new ChatMessage() {
                    //        Date = DateTime.Now,
                    //        Name = prefix,
                    //        Text = "[УДАЛЕНИЕ] " + e.RawContent
                    //    });
                    //    break;

                    //default:
                    //    msgs.Add(new ChatMessage() {
                    //        Date = DateTime.Now,
                    //        Name = prefix,
                    //        Text = "["+command + "] " + e.RawContent
                    //    });
                    //    break;
                }

                if (msgs.Count > 0)
                {
                    OnNewMessagesArrived(msgs);
                }
            }
        }
예제 #5
0
 private void OnRawMessageReceived(object?sender, IrcRawMessageEventArgs e)
 {
     Task.Run(async() => await ResponseHandler.HandleAsync(e.RawContent, this));
 }
예제 #6
0
 private void ClientOnRawMessageSent(object sender, IrcRawMessageEventArgs ircRawMessageEventArgs)
 {
     //ircRawMessageEventArgs.
 }