Example #1
0
        public void RetrieveStatus2(string nick, config.channel channel, string source)
        {
            try
            {
                string response = "I have never seen " + nick;
                bool   found    = false;
                string action   = "quiting the network";
                foreach (item xx in global)
                {
                    if (nick.ToUpper() == xx.nick.ToUpper())
                    {
                        found = true;
                        config.channel last;
                        switch (xx.LastAc)
                        {
                        case item.Action.Join:
                            action = "joining the channel";
                            last   = core.getChannel(xx.lastplace);
                            if (last != null)
                            {
                                if (last.containsUser(nick))
                                {
                                    action += ", they are still in the channel";
                                }
                                else
                                {
                                    action += ", but they are not in the channel now and I don't know why, in";
                                }
                            }
                            break;

                        case item.Action.Kick:
                            action = "kicked from the channel";
                            break;

                        case item.Action.Nick:
                            if (xx.newnick == null)
                            {
                                action = "error NULL pointer at record";
                                break;
                            }
                            action = "changing the nickname to " + xx.newnick;
                            last   = core.getChannel(xx.lastplace);
                            if (last.containsUser(xx.newnick))
                            {
                                action += " and " + xx.newnick + " is still in the channel";
                            }
                            else
                            {
                                action += ", but " + xx.newnick + " is no longer in channel";
                            }
                            item nick2 = getItem(xx.newnick);
                            if (nick2 != null)
                            {
                                TimeSpan span3 = DateTime.Now - nick2.LastSeen;
                                switch (nick2.LastAc)
                                {
                                case item.Action.Exit:
                                    action += " because he quitted the network " + span3.ToString() + " ago. The nick change was done in";
                                    break;

                                case item.Action.Kick:
                                    action += " because he was kicked from the channel " + span3.ToString() + " ago. The nick change was done in";
                                    break;

                                case item.Action.Part:
                                    action += " because he left the channel " + span3.ToString() + " ago. The nick change was done in";
                                    break;
                                }
                            }
                            break;

                        case item.Action.Part:
                            action = "leaving the channel";
                            break;

                        case item.Action.Talk:
                            action = "talking in the channel";
                            last   = core.getChannel(xx.lastplace);
                            if (last != null)
                            {
                                if (last.containsUser(nick))
                                {
                                    action += ", they are still in the channel";
                                }
                                else
                                {
                                    action += ", but they are not in the channel now and I don't know why, in";
                                }
                            }
                            break;

                        case item.Action.Exit:
                            string reason = xx.quit;
                            if (reason == "")
                            {
                                reason = "no reason was given";
                            }
                            action = "quitting the network with reason: " + reason;
                            break;
                        }
                        TimeSpan span = DateTime.Now - xx.LastSeen;
                        if (xx.LastAc == item.Action.Exit)
                        {
                            response = "Last time I saw " + nick + " they were " + action + " at " + xx.LastSeen.ToString() + " (" + RegularModule.FormatTimeSpan(span) + " ago)";
                        }
                        response = "Last time I saw " + nick + " they were " + action + " " + xx.lastplace + " at " + xx.LastSeen.ToString() + " (" + RegularModule.FormatTimeSpan(span) + " ago)";
                        break;
                    }
                }
                string target = source;
                if (channel != null)
                {
                    target = channel.Name;
                }
                if (nick.ToUpper() == source.ToUpper())
                {
                    response = "are you really looking for yourself?";
                    core.irc._SlowQueue.DeliverMessage(source + ": " + response, target, IRC.priority.normal);
                    return;
                }
                if (nick.ToUpper() == config.NickName.ToUpper())
                {
                    response = "I am right here";
                    core.irc._SlowQueue.DeliverMessage(source + ": " + response, target, IRC.priority.normal);
                    return;
                }
                if (channel != null)
                {
                    if (channel.containsUser(nick))
                    {
                        response = nick + " is in here, right now";
                        found    = true;
                    }
                }
                if (!found)
                {
                    foreach (config.channel Item in config.channels)
                    {
                        if (Item.containsUser(nick))
                        {
                            response = nick + " is in " + Item.Name + " right now";
                            break;
                        }
                    }
                }
                core.irc._SlowQueue.DeliverMessage(source + ": " + response, target, IRC.priority.normal);
            }
            catch (Exception fail)
            {
                handleException(fail);
            }
        }
Example #2
0
        public void Search()
        {
            try
            {
                if (misc.IsValidRegex(temp_nick))
                {
                    System.Text.RegularExpressions.Regex ex = new System.Text.RegularExpressions.Regex(temp_nick);
                    string response = "I have never seen " + temp_nick;
                    bool   found    = false;
                    bool   multiple = false;
                    string results  = "";
                    int    cn       = 0;
                    string action   = "quitting the network with reason ";
                    foreach (item xx in global)
                    {
                        if (ex.IsMatch(xx.nick))
                        {
                            if (found)
                            {
                                cn++;
                                if (cn < 6)
                                {
                                    results += xx.nick + ", ";
                                }
                                multiple = true;
                                continue;
                            }
                            found = true;
                            config.channel last = null;
                            switch (xx.LastAc)
                            {
                            case item.Action.Join:
                                action = "joining the channel";
                                last   = core.getChannel(xx.lastplace);
                                if (last != null)
                                {
                                    if (last.containsUser(xx.nick))
                                    {
                                        action += ", they are still in the channel";
                                    }
                                    else
                                    {
                                        action += ", but they are not in the channel now and I don't know why, in";
                                    }
                                }
                                break;

                            case item.Action.Kick:
                                action = "kicked from the channel";
                                break;

                            case item.Action.Nick:
                                if (xx.newnick == null)
                                {
                                    action = "error NULL pointer at record";
                                }
                                else
                                {
                                    action = "changing the nickname to " + xx.newnick;
                                    last   = core.getChannel(xx.lastplace);
                                    if (last.containsUser(xx.newnick))
                                    {
                                        action += " and " + xx.newnick + " is still in the channel";
                                    }
                                    else
                                    {
                                        action += ", but " + xx.newnick + " is no longer in channel";
                                    }
                                    item nick = getItem(xx.newnick);
                                    if (nick != null)
                                    {
                                        TimeSpan span3 = DateTime.Now - nick.LastSeen;
                                        switch (nick.LastAc)
                                        {
                                        case item.Action.Exit:
                                            action += " because he quitted the network " + span3.ToString() + " ago. The nick change was done in";
                                            break;

                                        case item.Action.Kick:
                                            action += " because he was kicked from the channel " + span3.ToString() + " ago. The nick change was done in";
                                            break;

                                        case item.Action.Part:
                                            action += " because he left the channel " + span3.ToString() + " ago. The nick change was done in";
                                            break;
                                        }
                                    }
                                }
                                break;

                            case item.Action.Part:
                                action = "leaving the channel";
                                break;

                            case item.Action.Talk:
                                action = "talking in the channel";
                                last   = core.getChannel(xx.lastplace);
                                if (last != null)
                                {
                                    if (last.containsUser(xx.nick))
                                    {
                                        action += ", they are still in the channel. It was in";
                                    }
                                    else
                                    {
                                        action += ", but they are not in the channel now and I don't know why. It was in";
                                    }
                                }
                                break;

                            case item.Action.Exit:
                                string reason = xx.quit;
                                if (reason == "")
                                {
                                    reason = "no reason was given";
                                }
                                action = "quitting the network with reason: " + reason;
                                break;
                            }
                            TimeSpan span2 = DateTime.Now - xx.LastSeen;
                            if (xx.lastplace == null)
                            {
                                xx.lastplace = "N/A";
                            }

                            if (xx.LastAc == item.Action.Exit)
                            {
                                response = "Last time I saw " + xx.nick + " they were " + action + " at " + xx.LastSeen.ToString() + " (" + RegularModule.FormatTimeSpan(span2) + " ago)";
                            }
                            else
                            {
                                response = "Last time I saw " + xx.nick + " they were " + action + " " + xx.lastplace + " at " + xx.LastSeen.ToString() + " (" + RegularModule.FormatTimeSpan(span2) + " ago)";
                            }
                        }
                    }
                    if (temp_nick.ToUpper() == temp_source.ToUpper())
                    {
                        response = "are you really looking for yourself?";
                        core.irc._SlowQueue.DeliverMessage(temp_source + ": " + response, chan.Name);
                        Working = false;
                        return;
                    }
                    if (temp_nick.ToUpper() == config.NickName.ToUpper())
                    {
                        response = "I am right here";
                        core.irc._SlowQueue.DeliverMessage(temp_source + ": " + response, chan.Name);
                        Working = false;
                        return;
                    }
                    if (chan.containsUser(temp_nick))
                    {
                        response = temp_nick + " is in here, right now";
                        found    = true;
                    }
                    if (multiple)
                    {
                        if (results.Length > 2)
                        {
                            results = results.Substring(0, results.Length - 2);
                        }
                        if (cn > 5)
                        {
                            results = results + " and " + (cn - 5).ToString() + " more results";
                        }
                        response += " (multiple results were found: " + results + ")";
                    }
                    core.irc._SlowQueue.DeliverMessage(temp_source + ": " + response, chan.Name);
                    Working = false;
                    return;
                }
                core.irc._SlowQueue.DeliverMessage(messages.get("Error1", chan.Language), chan.Name);
                Working = false;
            }
            catch (ThreadAbortException)
            {
                return;
            }
            catch (Exception fail)
            {
                handleException(fail);
                Working = false;
            }
        }