Пример #1
0
        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");
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        /// <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();
            }
        }
Пример #4
0
        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
            }
        }
Пример #5
0
        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);
                }
            }
        }