private void _Event_PRIVMSG(IrcMessageData ircdata)
{
if (ircdata.Type == ReceiveType.CtcpRequest) {
if (ircdata.Message.StartsWith("\x1"+"PING")) {
if (ircdata.Message.Length > 7) {
SendMessage(SendType.CtcpReply, ircdata.Nick, "PING "+ircdata.Message.Substring(6, (ircdata.Message.Length-7)));
} else {
SendMessage(SendType.CtcpReply, ircdata.Nick, "PING");
}
} else if (ircdata.Message.StartsWith("\x1"+"VERSION")) {
string versionstring;
if (_CtcpVersion == null) {
versionstring = VersionString;
} else {
versionstring = _CtcpVersion;
}
SendMessage(SendType.CtcpReply, ircdata.Nick, "VERSION "+versionstring);
} else if (ircdata.Message.StartsWith("\x1"+"CLIENTINFO")) {
SendMessage(SendType.CtcpReply, ircdata.Nick, "CLIENTINFO PING VERSION CLIENTINFO");
}
}
switch (ircdata.Type) {
case ReceiveType.ChannelMessage:
if (OnChannelMessage != null) {
OnChannelMessage(this, new IrcEventArgs(ircdata));
}
break;
case ReceiveType.ChannelAction:
if (OnChannelAction != null) {
string action = ircdata.Message.Substring(7, ircdata.Message.Length-8);
OnChannelAction(this, new ActionEventArgs(ircdata, action));
}
break;
case ReceiveType.QueryMessage:
if (OnQueryMessage != null) {
OnQueryMessage(this, new IrcEventArgs(ircdata));
}
break;
case ReceiveType.QueryAction:
if (OnQueryAction != null) {
string action = ircdata.Message.Substring(7, ircdata.Message.Length-8);
OnQueryAction(this, new ActionEventArgs(ircdata, action));
}
break;
case ReceiveType.CtcpRequest:
if (OnCtcpRequest != null) {
int space_pos = ircdata.Message.IndexOf(' ');
string cmd = "";
string param = "";
if (space_pos != -1) {
cmd = ircdata.Message.Substring(1, space_pos - 1);
param = ircdata.Message.Substring(space_pos + 1,
ircdata.Message.Length - space_pos - 2);
} else {
cmd = ircdata.Message.Substring(1, ircdata.Message.Length - 2);
}
OnCtcpRequest(this, new CtcpEventArgs(ircdata, cmd, param));
}
break;
}
}