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); } }
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; } }