Exemple #1
0
        public BetWorker(MainViewModel viewModel)
        {
            _viewModel = viewModel;
            _bets = new List<Bet>();
            _users = new List<User>();

            _ircClient = new IrcClient();
            _ircClient.Connect(_server, _port);
            _ircClient.WriteLine(Rfc2812.Nick(_botName), Priority.Critical);
            _ircClient.WriteLine(Rfc2812.User(_botName, 0, _botName), Priority.Critical);
            _ircClient.WriteLine(Rfc2812.Join(_channel));
            _listenThread = new Thread(() =>
            {
                _ircClient.OnChannelMessage += _ircClient_OnChannelMessage;
                _ircClient.OnJoin += _ircClient_OnJoin;
                _ircClient.OnPart += _ircClient_OnPart;
                _ircClient.OnQuit += _ircClient_OnQuit;
                _ircClient.Listen();
            });
            _listenThread.Start();
        }
Exemple #2
0
 private static void Run()
 {
     while( !stopRequested ) {
         try {
             irc = new IrcClient();
             irc.Encoding = System.Text.Encoding.UTF8;
             irc.SendDelay = 200;
             irc.ActiveChannelSyncing = true;
             irc.OnRawMessage += new IrcEventHandler( irc_OnRawMessage );
             irc.Connect( settings.IrcHost, settings.IrcPort );
             irc.Login( NICK, NICK, 0, NICK, settings.IrcPassword );
             irc.RfcJoin( settings.IrcChannelName );
             irc.Listen();
             if( irc.IsConnected ) {
                 irc.Disconnect();
             }
         } catch( Exception e ) {
             Console.WriteLine( e.Message );
         }
         if( !stopRequested ) {
             Thread.Sleep( TimeSpan.FromSeconds( 10 ) );
         }
     }
 }
Exemple #3
0
        public override void Loop()
        {
            while (true)
            {

                _client = new IrcClient
                    {
                        AutoJoinOnInvite = true,
                        AutoReconnect = true,
                        AutoRejoin = true,
                        AutoRejoinOnKick = true,
                        AutoRelogin = true,
                        AutoRetry = true
                    };
                var mre = new ManualResetEvent(false);
                _client.OnJoin += (sender, args) =>
                                  Output("I have joined " + args.Channel);
                _client.OnChannelMessage += (sender, args) =>
                                            Handle(args.Data.Message);
                _client.OnConnected += (sender, args) =>
                    {
                        mre.Set();
                        _client.RfcJoin("#jarvis");
                    };

                _client.Connect("irc.clossit.com", 6668);
                _client.Login("Jarvis", "Jarvis");
                new Thread(() => _client.Listen()).Start();
                mre.WaitOne(30.Seconds());
                while (_client.IsConnected)
                {
                    5.Seconds().Sleep();
                }
                Output("I have lost connection to I.R.C");
            }
        }
Exemple #4
0
        static void Main(string[] args)
        {
            string confFile = "bot.conf";

            // accept some console arguments
            if (args.Length > 0)
            {
                foreach (string arg in args)
                {
                    string[] nv = arg.Split(new char[] { '=' });
                    switch (nv[0])
                    {
                        //config file
                        case "-c":
                        case "-config":
                            confFile = nv[1];
                            break;
                    }
                }
            }

            // load the configuration information first
            // since other things will rely on it.
            try
            {
                System.Console.WriteLine("Using config: " + confFile);
                conf = new IniConfigSource(Path.Combine(Environment.CurrentDirectory,confFile));
            }
            catch (IOException ioe)
            {
                FatalError(ioe.Message);
            }
            catch (Exception ex)
            {
                FatalError(ex.Message);
            }

            // initialise our functions (the IRC commands).
            // let them set up and initialise before we connect
            functions = new List<IFunction>();
            InitFunctions();

            // and begin to handle their outputs now
            foreach (var f in functions)
            {
                f.FunctionOutputHandler += new FunctionOutput(f_FunctionOutputHandler);
            }

            // load the irc stuff
            irc = new IrcClient();

            // and handle some irc events
            irc.OnRawMessage += new IrcEventHandler(irc_OnRawMessage);
            irc.OnConnected += new EventHandler(irc_OnConnected);

            // listen for commands in the console
            // (but we don't do anything with it yet)
            new Thread(new ThreadStart(ReadLine)).Start();

            // now set up IRC and connect
            try
            {

                irc.SendDelay = Convert.ToInt32(GetConf("bot", "delay"));
                irc.ActiveChannelSyncing = true;
                irc.Encoding = System.Text.Encoding.UTF8;
                irc.AutoNickHandling = true;
            }
            catch (Exception ex)
            {
                Console.WriteLine("IRC Initialisation error: ");
                FatalError(ex.Message);
            }

            try
            {
                string network = (string)GetConf("bot", "network");
                int port = Convert.ToInt32(GetConf("bot", "port"));
                irc.Connect(network, port);
            }
            catch (ConnectionException e)
            {
                Console.WriteLine("Connection error: ");
                FatalError(e.Message);
            }

            string nick = "", realName = "", ident = "";

            try
            {
                nick = (string)GetConf("bot", "nick");
                realName = (string)GetConf("bot", "real_name");
                ident = (string)GetConf("bot", "ident");
            }
            catch (Exception e)
            {
                Console.WriteLine("Configuration error.");
                FatalError(e.Message);
            }

            try
            {
                irc.Login(nick, realName, 0, ident);
                irc.Listen(); // hang here until disconnect
                irc.Disconnect();
            }
            catch (ConnectionException ce)
            {
                Console.WriteLine("Login error: ");
                FatalError(ce.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unkonwn error: ");
                Console.Write(e);
                FatalError(e.Message);
            }    
        }
Exemple #5
0
        /// <summary>
        /// just testing the IRC chat connection stability...
        /// </summary>
        private static void TestConnectionStability()
        {
            while (true)
            {
                try
                {
                    irc_test = new IrcClient();
                    irc_test.AutoRetry = true;
                    irc_test.AutoReconnect = true;
                    irc_test.OnChannelMessage += new IrcEventHandler(irc_test_OnChannelMessage);
                    irc_test.OnRawMessage += new IrcEventHandler(irc_test_OnRawMessage);
                    // here we try to connect to the server and exceptions get handled
                    irc_test.Connect(serverlist, port);
                }
                catch (ConnectionException e)
                {
                    // something went wrong, the reason will be shown
                    logger.Trace("couldn't connect! Reason: " + e.Message);
                    //Exit();
                }

                try
                {
                    // here we logon and register our nickname and so on
                    irc_test.Login(nick, real);

                    // join the channel
                    irc_test.RfcJoin(channel);

                    // here we tell the IRC API to go into a receive mode, all events
                    // will be triggered by _this_ thread (main thread in this case)
                    // Listen() blocks by default, you can also use ListenOnce() if you
                    // need that does one IRC operation and then returns, so you need then
                    // an own loop
                    irc_test.Listen();

                    // when Listen() returns our IRC session is over, to be sure we call
                    // disconnect manually
                    irc_test.Disconnect();
                }
                catch (ConnectionException e)
                {
                    // this exception is handled becaused Disconnect() can throw a not
                    // connected exception
                    logger.Trace("Connection exception: " + e.Message);
                    //Exit();
                }
                catch (Exception e)
                {
                    // this should not happen by just in case we handle it nicely
                    logger.Trace("Error occurred! Message: " + e.Message);
                    logger.Trace("Exception: " + e.StackTrace);
                    //Exit();
                }

                logger.Trace("Going to sleep");
                System.Threading.Thread.Sleep(5*60000);
                logger.Trace("===========================================");
            }
        }
Exemple #6
0
        public static void Main(string[] args)
        {
            //this method is just for some tests
            //TestConnectionStability();
            //return;

            int cycle_cnt = 0;
            while (true)
            {
                cycle_cnt++;
                //Console.Clear();
                Console.WriteLine("Cycle: " + cycle_cnt);
                Thread.CurrentThread.Name = "Main";

                #region Settings
                string startupPath = Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
                if (File.Exists(startupPath + "\\settings.ini"))
                    profile = new Ini(startupPath + "\\settings.ini");
                else
                {
                    logger.Trace("Did not find" + startupPath);

                }
                channel = (string)profile.GetValue("Main", "Channel");
                nick = (string)profile.GetValue("Main", "Nick");
                real = (string)profile.GetValue("Main", "Real");
                #endregion

                #region IRC Setup
                irc = new IrcClient();
                irc.SendDelay = 500;
                irc.ActiveChannelSyncing = true;
                irc.OnChannelMessage += new IrcEventHandler(OnChannelMessage);
                irc.OnQueryMessage += new IrcEventHandler(OnQueryMessage);
                irc.OnBan += new BanEventHandler(OnBanMessage);

                irc.OnError += new Meebey.SmartIrc4net.ErrorEventHandler(OnError);
                irc.OnPart += new PartEventHandler(irc_OnPart);
                irc.OnRawMessage += new IrcEventHandler(OnRawMessage);
                if (proactiveMode)
                {
                    timer = new System.Timers.Timer();
                    timer.Elapsed += new System.Timers.ElapsedEventHandler(autoAnswering);
                }
                #endregion

                sl = new SortedList();

                Console.WriteLine("**********************************************************");
                Console.WriteLine("These are my settings: ");
                Console.WriteLine("Trying to connect to " + serverlist[0] + " on port " + port + " - joining channel: " + channel);
                Console.WriteLine("My nickname is: " + nick + " and my real name is: " + real);
                Console.WriteLine("**********************************************************");
                try
                {
                    irc.AutoRetry = true;
                    irc.AutoReconnect = true;
                    irc.Connect(serverlist, port);
                }
                catch (ConnectionException e)
                {
                    logger.Trace("couldn't connect! Reason: " + e.Message);
                }

                try
                {
                    // here we logon and register our nickname and so on
                    irc.OnRawMessage += new IrcEventHandler(irc_OnRawMessage);
                    irc.Login(nick, real);

                    //load all channels
                    irc.RfcList("");

                    Dictionary<string, int> chann = new Dictionary<string, int>();

                    // join the channel
                    irc.RfcJoin(channel);
                    irc.OnChannelAction += new ActionEventHandler(irc_OnChannelAction);

                    #region Prelude Setup
                    //initialize interface
                    logger.Trace("Loading Prelude...");
                    pi = new PreLudeInterface();
                    //define path to mind file
                    pi.loadedMind = "mind.mdu";
                    pi.avoidLearnByRepeating = true;
                    pi.initializedAssociater = Mind.MatchingAlgorithm.Dice;
                    //start your engine ...
                    pi.initializeEngine();
                    logger.Trace("Prelude loaded and initialized...");
                    #endregion

                    // spawn a new thread to read the stdin of the console, this we use
                    // for reading IRC commands from the keyboard while the IRC connection
                    // stays in its own thread
                    new Thread(new ThreadStart(ReadCommands)).Start();
                    irc.Listen();
                    // when Listen() returns our IRC session is over, to be sure we call
                    // disconnect manually
                    irc.Disconnect();
                }
                catch (ConnectionException)
                {
                    logger.Trace("Connection exception");
                    pi.stopPreludeEngine();
                }
                catch (Exception e)
                {
                    logger.Trace("Error occurred! Message: " + e.Message);
                    logger.Trace("Exception: " + e.StackTrace);
                    pi.stopPreludeEngine();

                }

                logger.Trace("Going to sleep");
                System.Threading.Thread.Sleep(5 * 60000);
                logger.Trace("===========================================");
            }
        }
Exemple #7
0
        public void Connect()
        {
            while (true)
            {
                _irc = new IrcClient();

                Logger.InfoFormat("Connecting to: {0}:{1}", _settings.Server, _settings.Port);
                try
                {
                    _irc.Encoding = System.Text.Encoding.UTF8;
                    _irc.SendDelay = 500;
                    _irc.ActiveChannelSyncing = true;
                    _irc.AutoReconnect = false;
                    _irc.AutoRejoinOnKick = true;
                    _irc.AutoRetry = true;
                    _irc.AutoRetryDelay = 10000;

                    _irc.OnQueryMessage += OnQueryMessage;
                    _irc.OnQueryNotice += OnQueryMessage;
                    _irc.OnError += OnError;
                    _irc.OnChannelMessage += OnChannelMessage;
                    //_irc.OnRawMessage += (x, e) => Logger.Info(e.Data.RawMessage);

                    _irc.Connect(_settings.Server, _settings.Port);
                }
                catch (Exception e)
                {
                    // Log this shit
                    Logger.Error(e.ToString());
                }

                Logger.Info("Connected! Joining channels");

                try
                {
                    _irc.Login(_settings.Nickname, "Name");

                    if (!String.IsNullOrWhiteSpace(_settings.Password))
                    {
                        _irc.RfcPrivmsg("NickServ", "identify " + _settings.Password);
                    }

                    foreach (var channel in _settings.GetAllChannels())
                    {
                        _irc.RfcJoin(channel);
                    }

                    _checkTimer.Change(TimeSpan.Zero, _settings.Period);
                }
                catch (Exception e)
                {
                    Logger.Error(e.ToString());
                }

                try
                {
                    _irc.Listen();
                    Logger.Error("Lost connection to IRC (Automatically reconnecting in 10 seconds)");
                    Thread.Sleep(10000);

                    if (_irc.IsConnected)
                    {
                        _irc.Disconnect();
                    }
                }
                catch (Exception e)
                {
                    Logger.Error(e.ToString());
                }
            }
        }
Exemple #8
0
        /// <summary>
        /// Creates and sets up an IrcClient instance and connects to a server according to "server"
        /// </summary>
        public void Connect(ServerDescriptor server)
        {
            if (server == null)
                throw new ArgumentNullException();

            Thread.CurrentThread.Name = server.Host;
            irc = new IrcClient();

            // Settings
            irc.Encoding = System.Text.Encoding.UTF8;
            irc.SendDelay = config.GetInt("send-delay", 200);
            irc.ActiveChannelSyncing = config.GetBoolean("use-active-channel-syncing", false);
            irc.UseSsl = server.UseSsl;

            // Bind event handlers
            irc.OnQueryMessage += new IrcEventHandler(OnQueryMessage);
            irc.OnChannelMessage += new IrcEventHandler(OnChannelMessage);
            irc.OnError += new Meebey.SmartIrc4net.ErrorEventHandler(OnError);
            irc.OnRawMessage += new IrcEventHandler(OnRawMessage);
            irc.OnPart += new PartEventHandler(OnPart);

            log.Info("Initializing plugins...");
            foreach (var plugin in Plugins)
            {
                plugin.Initialize(config);
                irc.OnChannelMessage += new IrcEventHandler(plugin.OnChannelMessage);
                irc.OnRawMessage += new IrcEventHandler(plugin.OnRawMessage);
            }

            try
            {
                log.Info("Connecting to server " + irc.Address);
                irc.Connect(server.Host, server.Port);
            }
            catch (ConnectionException e)
            {
                log.Error("Could not connect to server " + irc.Address, e);
                Exit();
            }

            try
            {
                irc.Login(config.GetString("nick", "slave"),
                    config.GetString("realname", "slave"),
                    0,
                    config.GetString("username", "slave")
                );

                foreach (string channel in server.Channels)
                    irc.RfcJoin(channel);

                irc.Listen();

                irc.Disconnect();
            }
            catch (ThreadAbortException e)
            {
                log.Info("Aborting thread", e);
                irc.Disconnect();
                Thread.CurrentThread.Abort();
            }
            catch (ConnectionException e)
            {
                log.Error("Error", e);
                Thread.CurrentThread.Abort();
            }
            catch (Exception e)
            {
                log.Error("Error", e);
                Thread.CurrentThread.Abort();
            }
        }