- string[] parts;
- string source = null;
- if (data.StartsWith(":")) {
- parts = data.Split((char[])null, 2, StringSplitOptions.RemoveEmptyEntries);
- source = parts[0].Substring(1);
- data = parts[1];
- }
-
- parts = data.Split((char[])null, 2, StringSplitOptions.RemoveEmptyEntries);
- if (parts[0] == "PRIVMSG") {
- processMsg(source, parts[1]);
- } else if (parts[0] == "376") {
- send("JOIN #jobbig.kelsier");
- } else if (parts[0] == "PING") {
- send("PONG "+parts[1]);
- }
+ string[] parts;
+ string source = null;
+ if (data.StartsWith(":")) {
+ parts = data.Split((char[])null, 2, StringSplitOptions.RemoveEmptyEntries);
+ source = parts[0].Substring(1);
+ data = parts[1];
+ }
+
+ parts = data.Split((char[])null, 2, StringSplitOptions.RemoveEmptyEntries);
+ if (parts[0] == "PRIVMSG") {
+ processMsg(source, parts[1]);
+ } else if (parts[0] == "376") {
+ send("AUTH "+this.authname+" "+this.authpass); // TODO 001 hook
+ send("MODE "+this.nick+" +x-w");
+ send("JOIN #jobbig");
+ } else if (parts[0] == "PING") {
+ send("PONG "+parts[1]);
+ }
+ }
+ // processMsg("DimeCadmium!dime@jobbig.eu", "#mustis :hi");
+ private void processMsg(string source, string data) {
+ string[] dataparts = data.Split((char[])null, 2, StringSplitOptions.RemoveEmptyEntries);
+
+ string nick = (source.Split(new char[] { '!' }))[0];
+ string target = dataparts[0];
+ string message = dataparts[1];
+ if (message.StartsWith(":"))
+ message = message.Substring(1);
+ string[] msgparts = message.Split((char[])null, StringSplitOptions.RemoveEmptyEntries);
+
+ // TODO check msgparts[0] first char for trigger
+ string cmdstr = msgparts[0].Substring(1);
+ string[] args;
+ bool chanmsg;
+ Channel chan;
+ if (target.StartsWith("#")) {
+ chanmsg = true;
+ args = new string[msgparts.Length - 1];
+ Array.Copy(msgparts, 1, args, 0, msgparts.Length - 1);
+ chan = new Channel(target);
+ } else {
+ chanmsg = false;
+ args = new string[msgparts.Length - 2];
+ Array.Copy(msgparts, 2, args, 0, msgparts.Length - 2);
+ chan = new Channel(msgparts[1]);
+ }
+
+ User user = new User(nick);
+
+ Command cmd = new Command(this, cmdstr, args, user, chan, chanmsg);