public void Connect() { using (var registeredEvent = new ManualResetEventSlim(false)) { using (var connectedEvent = new ManualResetEventSlim(false)) { client.Connected += (sender2, e2) => connectedEvent.Set(); client.Registered += (sender2, e2) => registeredEvent.Set(); client.Connect(server, false, new IrcUserRegistrationInfo() { NickName = username, Password = password, UserName = username }); if (!connectedEvent.Wait(10000)) { Console.WriteLine("Connection to: " + server + " timed out."); return; } } Console.WriteLine("Now connected to: " + server); if (!registeredEvent.Wait(10000)) { Console.WriteLine("Could not register to: " + server); } client.Channels.Join("#nediarph"); } }
public static void Init(string[] args) { if (args.Length < 2) { Log.Logger.OutputToConsole("Usage: twitchirc <username> <oauth>"); Log.Logger.OutputToConsole( "Use http://twitchapps.com/tmi/ to generate an <oauth> token!"); return; } var server = "irc.twitch.tv"; var username = args[0]; var password = args[1]; Log.Logger.OutputToConsole("Starting to connect to twitch as {0}.", username); using (client = new TwitchIrcClient()) { client.FloodPreventer = new IrcStandardFloodPreventer(4, 2000); client.Disconnected += IrcClient_Disconnected; client.Registered += IrcClient_Registered; // Wait until connection has succeeded or timed out. using (var registeredEvent = new ManualResetEventSlim(false)) { using (var connectedEvent = new ManualResetEventSlim(false)) { client.Connected += (sender2, e2) => connectedEvent.Set(); client.Registered += (sender2, e2) => registeredEvent.Set(); client.Connect(server, false, new IrcUserRegistrationInfo() { NickName = username.ToLower(), Password = password, UserName = username }); if (!connectedEvent.Wait(10000)) { Log.Logger.OutputToConsole("Connection to '{0}' timed out.", server); return; } } Console.Out.WriteLine("Now connected to '{0}'.", server); if (!registeredEvent.Wait(10000)) { Log.Logger.OutputToConsole("Could not register to '{0}'.", server); return; } } Console.Out.WriteLine("Now registered to '{0}' as '{1}'.", server, username); client.SendRawMessage( "CAP REQ :twitch.tv/membership twitch.tv/commands twitch.tv/tags"); HandleEventLoop(client); } }
/// <summary> /// Starts the client, connecting to IRC server, and beginning the join queue. /// </summary> public void Start() { lock (controlSyncLock) { Stop(); Status = ClientStatus.Connecting; TmiLog.Log($"Starting client. Connecting to irc://{IRC_HOSTNAME}:{IRC_PORT_NONSSL}..."); // Init IRC client = new TwitchIrcClient(); client.Connected += Client_Connected; client.Registered += Client_Registered; client.ConnectFailed += Client_ConnectFailed; client.ProtocolError += Client_ProtocolError; client.ErrorMessageReceived += Client_ErrorMessageReceived; client.Error += Client_Error; client.MotdReceived += Client_MotdReceived; client.Disconnected += Client_Disconnected; client.RawMessageReceived += Client_RawMessageReceived; client.RawMessageSent += Client_RawMessageSent; client.Connect(new DnsEndPoint(IRC_HOSTNAME, IRC_PORT_NONSSL), false, new IrcUserRegistrationInfo() { UserName = this.userName, NickName = this.userName, Password = this.password }); // Fill the channel join queue, and start the queue thread channelJoinQueue.Clear(); channelList.ForEach((channel) => channelJoinQueue.Enqueue(channel)); // Start the queue thread channelJoinQueueThread = new Thread(new ThreadStart(__RunChannelJoinQueue)); channelJoinQueueThread.Name = "Tmi__RunChannelJoinQueue"; channelJoinQueueThread.Priority = ThreadPriority.BelowNormal; channelJoinQueueThread.Start(); } }
public bool Connect(BotType target) { switch (target) { case BotType.Osu: { IrcUserRegistrationInfo reg = new IrcUserRegistrationInfo() { NickName = m_credentials.OsuCredentials.Username, UserName = m_credentials.OsuCredentials.Username, RealName = m_credentials.OsuCredentials.Username, Password = m_credentials.OsuCredentials.Password, }; try { m_osuClient = new StandardIrcClient(); m_osuClient.Connected += (o, e) => { Console.WriteLine("Connected to irc.ppy.sh"); }; m_osuClient.ConnectFailed += (o, e) => { Console.WriteLine("Failed connecting to irc.ppy.sh"); }; Console.WriteLine("Connecting to irc.ppy.sh..."); m_osuClient.RawMessageReceived += m_osuClient_RawMessageReceived; m_osuClient.Disconnected += (o, e) => { m_osuClient.Disconnect(); Console.WriteLine("Got disconnected from irc.ppy.sh, reconnecting..."); m_osuClient.Connect("irc.ppy.sh", 6667, false, reg); }; m_osuClient.Connect("irc.ppy.sh", 6667, false, reg); m_osuClient.SendRawMessage($"PASS {m_credentials.OsuCredentials.Password}\r\n"); m_osuClient.SendRawMessage($"NICK {m_credentials.OsuCredentials.Username}\r\n"); return(true); } catch (Exception e) { Console.WriteLine($"Something happened while trying to connect to irc.ppy.sh, {e.Message}"); return(false); } } case BotType.Twitch: { { IrcUserRegistrationInfo reg = new IrcUserRegistrationInfo() { NickName = m_credentials.TwitchCredentials.Username, UserName = m_credentials.TwitchCredentials.Username, RealName = m_credentials.TwitchCredentials.Username, Password = m_credentials.TwitchCredentials.Password }; try { m_twitchClient = new TwitchIrcClient(); m_twitchClient.Connected += (o, e) => { Console.WriteLine("Connected to irc.twitch.tv"); }; m_twitchClient.ConnectFailed += (o, e) => { Console.WriteLine("Failed connecting to irc.twitch.tv"); }; Console.WriteLine("Connecting to irc.twitch.tv..."); m_twitchClient.RawMessageReceived += m_twitchClient_RawMessageReceived; m_twitchClient.Disconnected += (o, e) => { Console.WriteLine("Got disconnected from irc.twitch.tv, reconnecting..."); m_twitchClient.Connect("irc.twitch.tv", 6667, false, reg); }; m_twitchClient.Connect("irc.twitch.tv", 6667, false, reg); return(true); } catch (Exception e) { Console.WriteLine($"Something happened while trying to connect to irc.twitch.tv, {e.Message}"); return(false); } } } default: return(false); // wat } }
public void StartBot() { string server = BotSettings.TwitchIRC; logger.Debug("Connecting to IRC..."); Console.WriteLine("Connecting..."); Console.WriteLine(""); using (var client = new TwitchIrcClient()) { client.FloodPreventer = new IrcStandardFloodPreventer(4, 2000); client.Registered += IrcClient_Registered; // Wait until connection has succeeded or timed out. using (var registeredEvent = new ManualResetEventSlim(false)) { //Group chat - for whisper (not using) //byte[]ip = {199,9,253,119}; //IPAddress p = new IPAddress(ip); //IPEndPoint i = new IPEndPoint(p, 443); using (var connectedEvent = new ManualResetEventSlim(false)) { client.Connected += (sender2, e2) => connectedEvent.Set(); client.Registered += (sender2, e2) => registeredEvent.Set(); client.Connect(server, false, new IrcUserRegistrationInfo() { NickName = BotSettings.UserName, Password = BotSettings.OAuthChat, UserName = BotSettings.UserName }); if (!connectedEvent.Wait(3000)) { isConnectedToIRC = false; DisplayConnectionError(server); OpenSettingsWindow(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Press Enter to restart Bot and apply new settings.."); Console.WriteLine(); Console.ReadLine(); Restart = true; } } if (!registeredEvent.Wait(3000)) { if (isConnectedToIRC) { isConnectedToIRC = false; DisplayConnectionError(server); OpenSettingsWindow(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Press Enter to restart Bot and apply new settings."); Console.WriteLine(); Console.ReadLine(); Restart = true; } } } if (isConnectedToIRC) { logger.Debug("Connected, about to join channel."); twitchAPI = new TwitchAPI(BotSettings.BotOAuth, BotSettings.BotClientID); client.SendRawMessage("CAP REQ :twitch.tv/membership"); //request to have Twitch IRC send join/part & modes. client.Join(MAINCHANNEL); HandleEventLoop(client); } } }