Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static TcpClient socket;
- public static StreamReader reader;
- public static StreamWriter writer;
- static void Main() {
- /* Attempt to connect to IRC server */
- try {
- socket = new TcpClient(hostname, port);
- socket.ReceiveBufferSize = 1024;
- Console.WriteLine("Connected");
- NetworkStream stream = socket.GetStream();
- reader = new StreamReader(stream);
- writer = new StreamWriter(stream);
- write("USER " + username + " 8 * :" + description);
- write("NICK " + username);
- write("PRIVMSG NickServ :identify " + password);
- read(reader);
- reader.Close();
- writer.Close();
- stream.Close();
- }
- catch {
- Console.WriteLine("Failed to connect");
- }
- }
- /* Reading data from the IRC server */
- static void read(StreamReader reader) {
- try {
- while (running) {
- interpret(reader.ReadLine());
- }
- }
- catch (Exception ex) {
- Console.WriteLine("Unable to read from server");
- }
- }
- /* Interpreting data from the IRC server */
- static void interpret(String data) {
- Console.WriteLine(data);
- string[] interpretData = data.Split(' ');
- string text = "";
- for (int i = 3; i < interpretData.Length; i++)
- text += interpretData[i] + " ";
- if (interpretData[0].Equals("PING"))
- onPing(interpretData[1]);
- else if (interpretData[1] == "JOIN") {
- string user = interpretData[0].Split('!')[0].Substring(1);
- if (user == username) {
- string chnl = interpretData[2].Substring(1);
- channelList.Add(chnl);
- write("PRIVMSG timeshifter :I've joined " + chnl);
- uptimeList.Add(new UptimeObject(chnl));
- }
- }
- else if (interpretData[1] == "PART") {
- string chnl = interpretData[2];
- string user = interpretData[0].Split('!')[0].Substring(1);
- if (user == username) {
- channelList.Remove(chnl);
- write("PRIVMSG timeshifter :I've left " + interpretData[2]);
- int id = -1;
- for (int i = 0; i < uptimeList.Count; i++) {
- if (uptimeList[i].Channel == interpretData[2])
- id = i;
- }
- uptimeList.RemoveAt(id);
- }
- }
- else if (interpretData[1].Equals("PRIVMSG")) {
- // Public message in channel
- if (interpretData[2].StartsWith("#")) {
- onPublicMessage(text, interpretData[2], interpretData[0]);
- }
- // Private message
- else if (interpretData[2].Equals(username)) {
- onPrivateMessage(interpretData[0], text);
- }
- }
- else if (interpretData[1] == "INVITE") {
- //channelList.Add(interpretData[3].Substring(1));
- write("JOIN " + interpretData[3].Substring(1));
- }
- else if (interpretData[1] == "NOTICE") {
- if (text.StartsWith(":You are now identified for"))
- OnAuth();
- }
- }
- static void OnAuth() {
- write("PRIVMSG timeshifter :I'm authenticated.");
- //write("JOIN " + channel, writer);
- }
- /* Writing data to the IRC server */
- static void write(string data) {
- try {
- writer.WriteLine(data);
- Console.WriteLine(">>> " + data);
- writer.Flush();
- }
- catch {
- Console.WriteLine("Error!");
- }
- }
- /* On ping request write pong back to the server */
- static void onPing(string pong) {
- pong = "PONG " + pong;
- write(pong);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement