This is a very simple program that establishes a connection to irc server, joins a channel and greets every nick that joins. This can be very helpful for all of you irc addicts that want to make your own bot written in C# language.IrcBot.cs: using System;using System.Net;using System.Net.Sockets;using System.IO;using System.Threading; /* * This program establishes a connection to irc server, joins a channel and greets every nickname that* joins the channel.** Coded by Pasi Havia 17.11.2001 http://koti.mbnet.fi/~curupted*/ class IrcBot{// Irc server to connect public static string SERVER = "irc.df.lth.se";// Irc server's port (6667 is default port)private static int PORT = 6667; // User information defined in RFC 2812 (Internet Relay Chat: Client Protocol) is sent to irc server private static string USER = "USER CSharpBot 8 * :I'm a C# irc bot"; // Bot's nicknameprivate static string NICK = "BotNick"; // Channel to joinprivate static string CHANNEL = "#my_channel"; // StreamWriter is declared here so that PingSender can access itpublic static StreamWriter writer; static void Main (string[] args){ NetworkStream stream;TcpClient irc;string inputLine;StreamReader reader;string nickname; try{irc = new TcpClient (SERVER, PORT);stream = irc.GetStream ();reader = new StreamReader (stream);writer = new StreamWriter (stream); // Start PingSender threadPingSender ping = new PingSender ();ping.Start (); writer.WriteLine (USER);writer.Flush ();writer.WriteLine ("NICK " + NICK);writer.Flush ();writer.WriteLine ("JOIN " + CHANNEL);writer.Flush (); while (true){ while ( (inputLine = reader.ReadLine () ) != null ){if (inputLine.EndsWith ("JOIN :" + CHANNEL) ){// Parse nickname of person who joined the channelnickname = inputLine.Substring(1, inputLine.IndexOf ("!") - 1);// Welcome the nickname to channel by sending a noticewriter.WriteLine ("NOTICE " + nickname + " :Hi " + nickname + " and welcome to " + CHANNEL + " channel!");writer.Flush ();// Sleep to prevent excess floodThread.Sleep (2000);}} // Close all streamswriter.Close ();reader.Close ();irc.Close ();}}catch (Exception e){// Show the exception, sleep for a while and try to establish a new connection to irc serverConsole.WriteLine (e.ToString () );Thread.Sleep (5000);string[] argv = { };Main (argv);}}} PingSender.cs:using System;using System.Threading; /** Class that sends PING to irc server every 15 seconds*/class PingSender{static string PING = "PING :";private Thread pingSender;// Empty constructor makes instance of Threadpublic PingSender () {pingSender = new Thread (new ThreadStart (this.Run) ); } // Starts the threadpublic void Start () { pingSender.Start (); } // Send PING to irc server every 15 secondspublic void Run (){while (true){IrcBot.writer.WriteLine (PING + IrcBot.SERVER);IrcBot.writer.Flush ();Thread.Sleep (15000);}}}