protected virtual void OnPrivateMessage(RemoteServer server, PrivateMessageEventArgs args) { PrivateMessageEvent?.Invoke(server, args); if (args.Sent) { PrivateMessageSentEvent?.Invoke(server, args); } else { PrivateMessageReceivedEvent?.Invoke(server, args); } }
protected virtual void OnMessageReceived(string input) { string[] toks = input.Split(' '); Match u, c; string user, message; if ((u = Patterns.rUserHost.Match(toks[0])).Success) { Channel target; message = input.Substring(input.IndexOf(':', 2) + 1); user = u.Groups[1].Value; if ((c = Patterns.rChannelRegex.Match(toks[2])).Success) { // TODO: Verify CTCP messages and fire off events for them target = GetChannel(c.Groups[1].Value); ChannelMessageReceivedEvent.Raise(this, new ChannelMessageReceivedEventArgs(target, message, user)); } else { // TODO: Verify CTCP messages and fire off events for them PrivateMessageReceivedEvent.Raise(this, new PrivateMessageReceivedEventArgs(user, message)); } } else { // TODO: InspIRCd's m_chanlog module support } /*if ((a = Patterns.rPrivmsg.Match(input)).Success) * { * user = a.Groups[1].Value; * message = a.Groups[4].Value; * target = a.Groups[3].Value; * * if ((b = Patterns.rChannelRegex.Match(a.Groups[3].Value)).Success) * { * var c = GetChannel(target); * ChannelMessageReceivedEvent.Raise(this, new ChannelMessageReceivedEventArgs(c, message, user)); * } * else * { * PrivateMessageReceivedEvent.Raise(this, new PrivateMessageReceivedEventArgs(user, message)); * } * }*/ }