Ejemplo n.º 1
0
        private bool CheckCommand(string message)
        {
            MessageInfo messageInfo = MessageInfo.Parse(message);

            //:sendak.freenode.net 375 Jaex :- sendak.freenode.net Message of the Day -
            //:sendak.freenode.net 372 Jaex :- Welcome to sendak.freenode.net in Vilnius, Lithuania, EU.
            if ((messageInfo.Command == "375" || messageInfo.Command == "372") && Info.SuppressMOTD)
            {
                return(true);
            }

            if (messageInfo.User.UserType == IRCUserType.Me)
            {
                messageInfo.User.Nickname = Info.Nickname;
            }

            OnOutput(messageInfo);

            switch (messageInfo.Command)
            {
            case "PING":     //PING :sendak.freenode.net
                SendRawMessage("PONG :" + messageInfo.Message);
                break;

            case "376":     //:sendak.freenode.net 376 Jaex :End of /MOTD command.
                OnConnected();
                break;

            case "PRIVMSG":     //:Jaex!Jaex@unaffiliated/jaex PRIVMSG #ShareX :test
                CheckMessage(messageInfo);
                break;

            case "JOIN":     //:Jaex!Jaex@unaffiliated/jaex JOIN #ShareX or :Jaex!Jaex@unaffiliated/jaex JOIN :#ShareX
                if (UserJoined != null)
                {
                    UserJoined(messageInfo.User, messageInfo.Parameters.Count > 0 ? messageInfo.Parameters[0] : messageInfo.Message);
                }
                break;

            case "PART":     //:Jaex!Jaex@unaffiliated/jaex PART #ShareX :"Leaving"
                if (UserLeft != null)
                {
                    UserLeft(messageInfo.User, messageInfo.Parameters[0]);
                }
                break;

            case "QUIT":     //:Jaex!Jaex@unaffiliated/jaex QUIT :Client Quit
                if (UserQuit != null)
                {
                    UserQuit(messageInfo.User, null);
                }
                break;

            case "NICK":     //:Jaex!Jaex@unaffiliated/jaex NICK :Jaex2
                if (UserNickChanged != null)
                {
                    UserNickChanged(messageInfo.User, messageInfo.Message);
                }
                break;

            case "KICK":     //:Jaex!Jaex@unaffiliated/jaex KICK #ShareX Jaex2 :Jaex2
                if (UserKicked != null)
                {
                    UserKicked(messageInfo.User, messageInfo.Parameters[0], messageInfo.Parameters[1]);
                }
                if (Info.AutoRejoinOnKick)
                {
                    JoinChannel(messageInfo.Parameters[0]);
                }
                break;

            case "311":     //:sendak.freenode.net 311 Jaex ShareX ~ShareX unaffiliated/sharex * :realname
            case "319":     //:sendak.freenode.net 319 Jaex ShareX :@#ShareX @#ShareX_Test
            case "312":     //:sendak.freenode.net 312 Jaex ShareX sendak.freenode.net :Vilnius, Lithuania, EU
            case "671":     //:sendak.freenode.net 671 Jaex ShareX :is using a secure connection
            case "317":     //:sendak.freenode.net 317 Jaex ShareX 39110 1440201914 :seconds idle, signon time
            case "330":     //:sendak.freenode.net 330 Jaex ShareX ShareX :is logged in as
            case "318":     //:sendak.freenode.net 318 Jaex ShareX :End of /WHOIS list.
                ParseWHOIS(messageInfo);
                break;

            case "396":     //:sendak.freenode.net 396 Jaex unaffiliated/jaex :is now your hidden host (set by services.)
                if (Info.AutoJoinWaitIdentify)
                {
                    AutoJoinChannels();
                }
                break;

            case "ERROR":
                return(false);
            }

            return(true);
        }
Ejemplo n.º 2
0
        private bool CheckCommand(string message)
        {
            MessageInfo messageInfo = MessageInfo.Parse(message);

            if (messageInfo.User.UserType == IRCUserType.Me)
            {
                messageInfo.User.Nickname = CurrentNickname;
            }

            bool suppressOutput =
                //:sendak.freenode.net 375 Jaex :- sendak.freenode.net Message of the Day -
                //:sendak.freenode.net 372 Jaex :- Welcome to sendak.freenode.net in Vilnius, Lithuania, EU.
                //:sendak.freenode.net 376 Jaex :End of /MOTD command.
                (Info.SuppressMOTD && messageInfo.CheckCommand("375", "372", "376")) ||
                //PING :sendak.freenode.net
                //PONG :sendak.freenode.net
                (Info.SuppressPing && messageInfo.CheckCommand("PING", "PONG"));

            if (!suppressOutput)
            {
                OnOutput(messageInfo);
            }

            switch (messageInfo.Command)
            {
            case "PING":     //PING :sendak.freenode.net
                SendRawMessage("PONG :" + messageInfo.Message);
                break;

            case "376":     //:sendak.freenode.net 376 Jaex :End of /MOTD command.
                OnConnected();
                break;

            case "433":     //:sendak.freenode.net 433 * ShareX :Nickname is already in use.
                if (!IsConnected && messageInfo.Parameters.Count >= 2)
                {
                    string nickname = !string.IsNullOrEmpty(Info.Nickname2) ? Info.Nickname2 : Info.Nickname + "_";

                    if (!messageInfo.Parameters[1].Equals(nickname, StringComparison.InvariantCultureIgnoreCase))
                    {
                        ChangeNickname(nickname);
                    }
                }
                break;

            case "PRIVMSG":     //:Jaex!Jaex@unaffiliated/jaex PRIVMSG #ShareX :test
                CheckMessage(messageInfo);
                break;

            case "JOIN":     //:Jaex!Jaex@unaffiliated/jaex JOIN #ShareX or :Jaex!Jaex@unaffiliated/jaex JOIN :#ShareX
                if (UserJoined != null)
                {
                    UserJoined(messageInfo.User, messageInfo.Parameters.Count > 0 ? messageInfo.Parameters[0] : messageInfo.Message);
                }
                break;

            case "PART":     //:Jaex!Jaex@unaffiliated/jaex PART #ShareX :"Leaving"
                if (UserLeft != null)
                {
                    UserLeft(messageInfo.User, messageInfo.Parameters[0]);
                }
                break;

            case "QUIT":     //:Jaex!Jaex@unaffiliated/jaex QUIT :Client Quit
                if (UserQuit != null)
                {
                    UserQuit(messageInfo.User, null);
                }
                break;

            case "NICK":     //:Jaex!Jaex@unaffiliated/jaex NICK :Jaex2
                if (UserNickChanged != null)
                {
                    UserNickChanged(messageInfo.User, messageInfo.Message);
                }
                break;

            case "KICK":     //:Jaex!Jaex@unaffiliated/jaex KICK #ShareX Jaex2 :Jaex2
                if (UserKicked != null)
                {
                    UserKicked(messageInfo.User, messageInfo.Parameters[0], messageInfo.Parameters[1]);
                }
                if (Info.AutoRejoinOnKick)
                {
                    JoinChannel(messageInfo.Parameters[0]);
                }
                break;

            case "311":     //:sendak.freenode.net 311 Jaex ShareX ~ShareX unaffiliated/sharex * :realname
            case "319":     //:sendak.freenode.net 319 Jaex ShareX :@#ShareX @#ShareX_Test
            case "312":     //:sendak.freenode.net 312 Jaex ShareX sendak.freenode.net :Vilnius, Lithuania, EU
            case "671":     //:sendak.freenode.net 671 Jaex ShareX :is using a secure connection
            case "317":     //:sendak.freenode.net 317 Jaex ShareX 39110 1440201914 :seconds idle, signon time
            case "330":     //:sendak.freenode.net 330 Jaex ShareX ShareX :is logged in as
            case "318":     //:sendak.freenode.net 318 Jaex ShareX :End of /WHOIS list.
                ParseWHOIS(messageInfo);
                break;

            case "396":     //:sendak.freenode.net 396 Jaex unaffiliated/jaex :is now your hidden host (set by services.)
                if (Info.AutoJoinWaitIdentify)
                {
                    AutoJoinChannels();
                }
                break;

            case "ERROR":
                return(false);
            }

            return(true);
        }