protected void Connect(string server, IrcRegistrationInfo registrationInfo) { var client = new IrcClient(); client.FloodPreventer = new IrcStandardFloodPreventer(4, 2000); client.Connected += IrcClient_Connected; client.Disconnected += IrcClient_Disconnected; client.Registered += IrcClient_Registered; client.PingReceived += IrcClient_PingReceived; client.NetworkInformationReceived += IrcClient_OnNetworkInformationReceived; client.RawMessageReceived += IrcClient_OnRawMessageReceived; client.RawMessageSent += IrcClient_OnRawMessageSent; clientCount++; // Wait until connection has succeeded or timed out. using (var connectedEvent = new ManualResetEventSlim(false)) { client.Connected += (sender2, e2) => connectedEvent.Set(); client.Connect(server, false, registrationInfo); // client.Id = clientCount++; if (!connectedEvent.Wait(10000)) { client.Dispose(); Console.WriteLine("Connection to '{0}' timed out.", server); return; } } // Add new client to collection this.allClients.Add(client); Console.Out.WriteLine("Now connected to '{0}'.", server); }
/// <summary> /// </summary> /// <param name="server"> /// </param> /// <param name="registrationInfo"> /// </param> protected void Connect(string server, IrcRegistrationInfo registrationInfo) { // Create new IRC client and connect to given server. var client = new IrcClient(); client.FloodPreventer = new IrcStandardFloodPreventer(4, 2000); client.Connected += this.IrcClient_Connected; client.Disconnected += this.IrcClient_Disconnected; client.Registered += this.IrcClient_Registered; client.ProtocolError += this.IrcClient_ProtocolError; client.ChannelListReceived += this.client_ChannelListReceived; // Wait until connection has succeeded or timed out. using (var connectedEvent = new ManualResetEventSlim(false)) { client.Connected += (sender2, e2) => connectedEvent.Set(); client.Connect(server, false, registrationInfo); if (!connectedEvent.Wait(10000)) { client.Dispose(); ConsoleUtilities.WriteError("Connection to '{0}' timed out.", server); return; } } // Add new client to collection. this.allClients.Add(client); Console.Out.WriteLine("Now connected to '{0}'.", server); }
public static void Start(SteamID room) { _room = room; if (_started) return; _started = true; messageQueue = new Queue<Tuple<string, string>>(); _client = new IrcClient(); // _client.FloodPreventer = new IrcStandardFloodPreventer(4, 2000); _client.Connected += (sender, e) => { Message("Connected. Waiting for registration..."); var c = (IrcClient)sender; c.Channels.Join(IRCChannel); c.LocalUser.NoticeReceived += (sender2, e2) => Console.WriteLine(string.Format("Notice from {0}: {1}", e2.Source.Name, e2.Text)); c.LocalUser.MessageReceived += (sender2, e2) => Message(string.Format("Received PM from {0}: {1}", e2.Source.Name, e2.Text)); c.LocalUser.JoinedChannel += (sender2, e2) => { Message(string.Format("Joined {0} - IRC Spy Mode engaged. {1}", e2.Channel.Name, e2.Comment)); //Message("Topic: " + e2.Channel.Topic); //Nothing happens! //e2.Channel.GetTopic(); //This causes TopicChanged to be called twice! e2.Channel.UsersListReceived += (sender3, e3) => Message("Users: " + string.Join(", ", e2.Channel.Users.OrderBy(u => u.User.NickName).Select(u => u.User.IsOperator ? "@" : "" + u.User.NickName))); //OH GOD MY EYES e2.Channel.TopicChanged += (sender3, e3) => Message("Topic: " + e2.Channel.Topic); e2.Channel.UserKicked += (sender3, e3) => Message(string.Format("{0} was kicked from {1}. {2}", e3.ChannelUser.User.NickName, e2.Channel.Name, e2.Comment)); e2.Channel.UserJoined += (sender3, e3) => Message(string.Format("{0} joined {1}. {2}", e3.ChannelUser.User.NickName, e2.Channel.Name, e2.Comment)); e2.Channel.UserLeft += (sender3, e3) => Message(string.Format("{0} left {1}. {2}", e3.ChannelUser.User.NickName, e2.Channel.Name, e2.Comment)); e2.Channel.MessageReceived += SendIRC; e2.Channel.NoticeReceived += (sender3, e3) => Console.WriteLine(string.Format("Notice from {0}: {1}", e3.Source.Name, e3.Text)); }; c.LocalUser.LeftChannel += (sender2, e2) => Message(string.Format("Left {0}. ({1})", e2.Channel.Name, e2.Comment)); }; _client.Disconnected += (sender, e) => { Message("Disconnected for some reason."); Stop(); }; _client.Registered += (sender, e) => Message(string.Format("Registered. Joining {0}...", IRCChannel)); using (var connectedEvent = new ManualResetEventSlim(false)) { _client.Connected += (sender2, e2) => connectedEvent.Set(); _client.Connect(IRCServer, false, new IrcUserRegistrationInfo { NickName = "AGOPBOT", UserName = "******", Password = "******", RealName = "Agopbot Shirinian" }); if (!connectedEvent.Wait(10000)) { _client.Dispose(); Message(string.Format("Connection to {0} timed out.", IRCServer)); } } }