Exemplo n.º 1
0
        public IrcMessenger()
        {
            var server = Config.Get("Irc.Server");
            var nick = Config.Get("Irc.Nick", Config.Get("Name", "gambot"));
            var user = Config.Get("Irc.User", nick);
            var password = Config.Get("Irc.Password");
            var ssl = Config.GetBool("Irc.Ssl");
            client = new IrcClient(server, new IrcUser(nick, user, password),
                                   ssl);

            client.SetHandler("372", (c, m) => { }); // Ignore MOTD

            client.PrivateMessageRecieved += (sender, args) =>
            {
                if (MessageReceived != null)
                {
                    var message = new IrcMessage(args.PrivateMessage);
                    MessageReceived(this,
                                    new MessageEventArgs
                                    {
                                        Message = message,
                                        Addressed =
                                            (!args.PrivateMessage
                                                  .IsChannelMessage ||
                                             String.Equals(message.To, nick,
                                                           StringComparison
                                                               .CurrentCultureIgnoreCase))
                                    });
                }
            };

            client.ConnectAsync();
        }
Exemplo n.º 2
0
        static void Main(string[] argArray)
        {
            InitClasses();

            if (argArray.Any()) _nickServAuth = argArray[0];

            //set the command prefix to $ if debug mode
            _commandPrefix = string.IsNullOrEmpty(_nickServAuth) ? "$" : "!";
            DevMode = string.IsNullOrEmpty(_nickServAuth);

            Client = (!string.IsNullOrEmpty(_nickServAuth)) ? new IrcClient(Config.Host, new IrcUser(Config.Nickname, Config.Username)) : new IrcClient(Config.Host, new IrcUser(Config.NickTest, Config.UserTest));
            Client.NetworkError += OnNetworkError;
            Client.ConnectionComplete += OnConnectionComplete;
            Client.UserMessageRecieved += OnUserMessageReceived;
            Client.ChannelMessageRecieved += OnChannelMessageReceived;
            Client.UserJoinedChannel += OnUserJoinedChannel;

            AnnounceTimer = new Timer();
            AnnounceTimer.Elapsed += OnTimedEvent;

            if (string.IsNullOrEmpty(_nickServAuth))
            {
                Utils.Log("Warning, nick serv authentication password is empty.");
            }

            Utils.Log("Connecting to IRC...");
            Client.ConnectAsync();
            Console.ReadLine();
        }
Exemplo n.º 3
0
 static void Main(string[] args)
 {
     var client = new IrcClient("irc.freenode.net", new IrcUser("ChatSharp", "ChatSharp"));
     client.NetworkError += (s, e) => Console.WriteLine("Error: " + e.SocketError);
     client.RawMessageRecieved += (s, e) => Console.WriteLine("<< {0}", e.Message);
     client.RawMessageSent += (s, e) => Console.WriteLine(">> {0}", e.Message);
     client.UserMessageRecieved += (s, e) =>
         {
             if (e.PrivateMessage.Message.StartsWith(".join "))
                 client.Channels.Join(e.PrivateMessage.Message.Substring(6));
             else if (e.PrivateMessage.Message.StartsWith(".list "))
             {
                 var channel = client.Channels[e.PrivateMessage.Message.Substring(6)];
                 var list = channel.Users.Select(u => u.Nick).Aggregate((a, b) => a + "," + b);
                 client.SendMessage(list, e.PrivateMessage.User.Nick);
             }
             else if (e.PrivateMessage.Message.StartsWith(".whois "))
                 client.WhoIs(e.PrivateMessage.Message.Substring(7), null);
             else if (e.PrivateMessage.Message.StartsWith(".raw "))
                 client.SendRawMessage(e.PrivateMessage.Message.Substring(5));
             else if (e.PrivateMessage.Message.StartsWith(".mode "))
             {
                 var parts = e.PrivateMessage.Message.Split(' ');
                 client.ChangeMode(parts[1], parts[2]);
             }
         };
     client.ChannelMessageRecieved += (s, e) =>
         {
             Console.WriteLine("<{0}> {1}", e.PrivateMessage.User.Nick, e.PrivateMessage.Message);
         };
     client.ConnectAsync();
     while (true) ;
 }
Exemplo n.º 4
0
        private void runIrc()
        {

            client = new IrcClient("irc.twitch.tv", new IrcUser(Settings.username, Settings.username, Settings.oauth));
            client.ConnectionComplete += (s, e) => client.JoinChannel("#" + Settings.username);
            client.ConnectionComplete += (s, e) => Invoke((MethodInvoker)(() => label2.Text = "Connected"));
            client.ConnectionComplete += (s, e) => Invoke((MethodInvoker)(() => label2.Location = new System.Drawing.Point(25, 127)));

            client.ChannelMessageRecieved += (s, e) => //holy shit the wrong spelling of received
            {

                //var channel = client.Channels[0];
                string message = e.IrcMessage.RawMessage;
                message = message.Substring(1);
                string user = message.Substring(0, message.IndexOf("!"));
                message = message.Substring(message.IndexOf(":") + 1);

                if (!sessionUsers.ContainsKey(user))
                {
                    sessionUsers.Add(user, new double[] { int.Parse(DateTime.Now.ToString("MMddHHmm")), 1 });
                    Console.WriteLine(sessionUsers[user].ToString());
                }
                else
                {
                    sessionUsers[user] = new double[] { sessionUsers[user][0], sessionUsers[user][1] + 1 };
                }

                Invoke((MethodInvoker)(() => ChatWindow.AppendText(user + ": " + message + "\n")));
            };

            client.ConnectAsync();
        }
Exemplo n.º 5
0
    private static void Main(){
      var ircUser = new IrcUser(Conf.Nick, Conf.User);
      var client = new IrcClient(Conf.Server, ircUser);
      var ChatBot = new BotAgent();
      ChatBot.Initialise();

      client.ConnectionComplete += (s, e) => {
        foreach (string chan in Conf.Channels)
          client.JoinChannel(chan);
      };

      client.ChannelMessageRecieved += (s, e) => {
        var source = e.PrivateMessage.Source;
        var channel = client.Channels[source];
        var message = e.PrivateMessage.Message;

        var urls = URLTitle.GetURLs(message);
        if (urls.Count != 0){
          var responseTitle = URLTitle.GetTitle(urls[0]);
          channel.SendMessage(responseTitle);
        }
        else{
          var query = ChatBot.Query(message);
          var response = ChatBot.Reply(query);
          Log(message, response.Output, Conf.Nick, source);
          channel.SendMessage(response.Output);
        }
      };

      client.NetworkError += (s, e) =>
        Console.WriteLine("Error: {0}", e.SocketError);
 
      client.ConnectAsync();
      while (true);
    }
Exemplo n.º 6
0
 static void Main(string[] args)
 {
     var client = new IrcClient("irc.freenode.net", new IrcUser("ChatSharp", "ChatSharp"));
     client.NetworkError += (s, e) => Console.WriteLine("Error: " + e.SocketError);
     client.RawMessageRecieved += (s, e) => Console.WriteLine("<< {0}", e.Message);
     client.RawMessageSent += (s, e) => Console.WriteLine(">> {0}", e.Message);
     client.UserMessageRecieved += (s, e) =>
         {
             if (e.PrivateMessage.Message.StartsWith(".join "))
                 client.Channels.Join(e.PrivateMessage.Message.Substring(6));
             else if (e.PrivateMessage.Message.StartsWith(".list "))
             {
                 var channel = client.Channels[e.PrivateMessage.Message.Substring(6)];
                 var list = channel.Users.Select(u => u.Nick).Aggregate((a, b) => a + "," + b);
                 client.SendMessage(list, e.PrivateMessage.User.Nick);
             }
             else if (e.PrivateMessage.Message.StartsWith(".whois "))
                 client.WhoIs(e.PrivateMessage.Message.Substring(7), null);
             else if (e.PrivateMessage.Message.StartsWith(".raw "))
                 client.SendRawMessage(e.PrivateMessage.Message.Substring(5));
             else if (e.PrivateMessage.Message.StartsWith(".mode "))
             {
                 var parts = e.PrivateMessage.Message.Split(' ');
                 client.ChangeMode(parts[1], parts[2]);
             }
             else if (e.PrivateMessage.Message.StartsWith(".topic "))
             {
                 string messageArgs = e.PrivateMessage.Message.Substring(7);
                 if (messageArgs.Contains(" "))
                 {
                     string channel = messageArgs.Substring(0, messageArgs.IndexOf(" "));
                     string topic = messageArgs.Substring(messageArgs.IndexOf(" ") + 1);
                     client.Channels[channel].SetTopic(topic);
                 }
                 else
                 {
                     string channel = messageArgs.Substring(messageArgs.IndexOf("#"));
                     client.GetTopic(channel);
                 }
             }
         };
     client.ChannelMessageRecieved += (s, e) =>
         {
             Console.WriteLine("<{0}> {1}", e.PrivateMessage.User.Nick, e.PrivateMessage.Message);
         };
     client.ChannelTopicReceived += (s, e) =>
         {
             Console.WriteLine("Received topic for channel {0}: {1}", e.Channel.Name, e.Topic);
         };
     client.ConnectAsync();
     while (true) ;
 }
Exemplo n.º 7
0
        public void Connect(string u, string c, string server, string p)
        {
            User = new IrcUser(u, u);
            Client = new IrcClient(server + ":" + p, User);
            Client.ConnectionComplete += (s, e) =>
            {
                Client.JoinChannel(c);

            };
            Client.MOTDRecieved += (s, e) =>
            {
                this.DisplayMessage(new CompositeType("MOTD", e.MOTD));

            };
            Client.ConnectAsync();
        }
Exemplo n.º 8
0
 static void Main(string[] args)
 {
     var client = new IrcClient("irc.freenode.net", new IrcUser("ChatSharp", "ChatSharp"));
     client.NetworkError += (s, e) => Console.WriteLine("Error: " + e.SocketError);
     client.RawMessageRecieved += (s, e) => Console.WriteLine("<< {0}", e.Message);
     client.RawMessageSent += (s, e) => Console.WriteLine(">> {0}", e.Message);
     client.UserMessageRecieved += (s, e) =>
         {
             if (e.PrivateMessage.Message.StartsWith(".join "))
                 client.Channels.Join(e.PrivateMessage.Message.Substring(6));
             else if (e.PrivateMessage.Message.StartsWith(".list "))
             {
                 var channel = client.Channels[e.PrivateMessage.Message.Substring(6)];
                 var list = channel.Users.Select(u => u.Nick).Aggregate((a, b) => a + "," + b);
                 client.SendMessage(list, e.PrivateMessage.User.Nick);
             }
             else if (e.PrivateMessage.Message.StartsWith(".whois "))
                 client.WhoIs(e.PrivateMessage.Message.Substring(7), null);
             else if (e.PrivateMessage.Message.StartsWith(".raw "))
                 client.SendRawMessage(e.PrivateMessage.Message.Substring(5));
             else if (e.PrivateMessage.Message.StartsWith(".bans "))
             {
                 client.GetBanList(e.PrivateMessage.Message.Substring(6), bans =>
                     {
                         client.SendMessage(string.Join(",", bans.Select(b =>
                             string.Format("{0} by {1} at {2}", b.Value, b.Creator, b.CreationTime)
                             ).ToArray()), e.PrivateMessage.User.Nick);
                     });
             }
             else if (e.PrivateMessage.Message.StartsWith(".exceptions "))
             {
                 client.GetExceptionList(e.PrivateMessage.Message.Substring(12), exceptions =>
                 {
                     client.SendMessage(string.Join(",", exceptions.Select(ex =>
                             string.Format("{0} by {1} at {2}", ex.Value, ex.Creator, ex.CreationTime)
                             ).ToArray()), e.PrivateMessage.User.Nick);
                 });
             }
         };
     client.ChannelMessageRecieved += (s, e) =>
         {
             Console.WriteLine("<{0}> {1}", e.PrivateMessage.User.Nick, e.PrivateMessage.Message);
         };
     client.ConnectAsync();
     while (true) ;
 }
        public MainTwitch(MainGame game, Voting voting)
        {
            this.game = game;
            this.voting = voting;

            AddActions();

            IrcClient client = new IrcClient(Host, new IrcUser(Username, Username, Password));

            client.ConnectionComplete += (s, e) => client.JoinChannel(Channel);
            client.PrivateMessageRecieved += (s, e) =>
            {
                ParseMessage(e.PrivateMessage.User.RealName, e.PrivateMessage.Message);
            };

            client.ConnectAsync();
        }
Exemplo n.º 10
0
        public MainWindow()
        {
            InitializeComponent();

            titleBar.MouseLeftButtonDown += (o, e) => DragMove();

            AddServerMessage("Connecting...");
            log.ItemsSource = messages[currentChannel];
            client = new IrcClient(SERVER, new IrcUser(USERNAME, USERNAME));
            channels.ItemsSource = channelNames;

            client.NoticeRecieved += NoticeReceived;
            client.MOTDPartRecieved += MotdPartReceived;
            client.ConnectionComplete += ConnectionComplete;

            client.UserJoinedChannel += UserJoinedChannel;
            client.ChannelMessageRecieved += ChannelMessageReceived;

            client.ConnectAsync();
        }
Exemplo n.º 11
0
        static void Main(string[] args)
        {
            var settings = Properties.Settings.Default;

            ircClient = new IrcClient(settings.IrcServer, new IrcUser(settings.IrcNick, settings.IrcNick));
            ircClient.ConnectionComplete += (s, e) => ircClient.JoinChannel(settings.IrcChannel);
            ircClient.ConnectAsync();

            Uri baseAddress = new Uri("net.pipe://localhost");

            using (ServiceHost host = new ServiceHost(typeof(Program), baseAddress))
            {
                host.AddServiceEndpoint(typeof(IBotService), new NetNamedPipeBinding(), "BotService");
                host.Open();
                Console.WriteLine("TfsBot {0} started...", Application.ProductVersion);
                Console.WriteLine("Press <Enter> to stop the bot.");
                Console.ReadLine();

                host.Close();
            }
            ircClient.Quit("Shutdown...");
        }
Exemplo n.º 12
0
        static void Main()
        {
            var client = new IrcClient("irc.esper.net:5555", new IrcUser("EdgeTest", "EdgeTest"));
            client.ConnectionComplete += (s, e) => client.JoinChannel("#otegamers");

            client.NetworkError += (s, e) => Console.WriteLine("Error: " + e.SocketError);

            client.RawMessageRecieved += (s, e) => Console.WriteLine("RAWRCV {0}", e.Message);
            client.RawMessageSent += (s, e) => Console.WriteLine("RAWSNT {0}", e.Message);

            client.ChannelMessageRecieved += (s, e) => Console.WriteLine("<{0}> {1}", e.PrivateMessage.User.Nick, e.PrivateMessage.Message);
            client.UserJoinedChannel += (sender, args) =>
            {
                if (Debug && EdgeData.Developers.Any(str => str.Equals(args.User.Nick)))
                {
                    EdgeUtils.SendNotice(client, String.Format(EdgeData.JoinMessage, args.User.Nick), args.User.Nick);
                }
            };

            client.ConnectAsync();
            while (true)
            {
            }
        }
Exemplo n.º 13
0
        private static void RunBot(string nick, string server, string channel)
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Write("\nConnecting to " + ProgramSettings.settings.LastJoinedServer + " on port 6667....");
            Console.ForegroundColor = ConsoleColor.White;

            client = new IrcClient(ProgramSettings.settings.LastJoinedServer, new IrcUser(ProgramSettings.settings.LastUsedNick, "RetaSharp", "V54swg3!", "RetaReta"));
            client.NetworkError += (s, e) => Console.WriteLine("Error: " + e.SocketError);
            client.ConnectionComplete += (s, e) =>
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.Write("\nConnected! Joining " + ProgramSettings.settings.LastJoinedChannel + "...");
                Console.ForegroundColor = ConsoleColor.White;
                client.JoinChannel(ProgramSettings.settings.LastJoinedChannel);
                Console.ForegroundColor = ConsoleColor.Green;
                Console.Write("\nSuccessfully joined " + ProgramSettings.settings.LastJoinedChannel + "\n");
                Console.ForegroundColor = ConsoleColor.White;

            };
            client.ConnectAsync();
            InputThread.Start();

            client.NoticeRecieved += (s, e) =>
            {
                Console.WriteLine("\nNOTICE FROM {0}: {1}", e.Source, e.Notice.ToString());
            };

            client.ChannelMessageRecieved += (s, e) =>
            {

                var channels = client.Channels[e.PrivateMessage.Source];
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.WriteLine("{0} - {1}: {2}", e.PrivateMessage.Source, e.PrivateMessage.User, e.PrivateMessage.Message); //just output the stuff boss
                Console.ForegroundColor = ConsoleColor.White;

                if (e.PrivateMessage.Message.StartsWith(ProgramSettings.settings.Prefix.ToString()))
                {
                    ircCommands(e.PrivateMessage.Message, e.PrivateMessage.User, client);
                }
                else if (e.PrivateMessage.Message.Contains(client.User.Nick))
                {
                    if (e.PrivateMessage.Message.Contains("help"))
                    {
                        char commandpre = ProgramSettings.settings.Prefix;
                        client.SendRawMessage("PRIVMSG {0} :Hi! I'm a bot! The current prefix is {1}. You can get a list of my commands with {1}commands!", client.Channels[0].Name, commandpre);
                    }
                    if (e.PrivateMessage.Message.Contains("Hello".ToLower()) || e.PrivateMessage.Message.Contains("Hi".ToLower()) || e.PrivateMessage.Message.Contains("Hey".ToLower()) || e.PrivateMessage.Message.Contains("Howdy".ToLower()) || e.PrivateMessage.Message.Contains("Hola".ToLower()) || e.PrivateMessage.Message.Contains("Bonjour".ToLower()))
                    {

                        client.SendRawMessage("PRIVMSG {0} :Hello there!", client.Channels[0].Name);
                    }
                    if (e.PrivateMessage.Message.Contains("time"))
                    {
                        string time = DateTime.Now.ToString("h:mm:ss tt");
                        client.SendRawMessage("PRIVMSG {0} :The time is currently {1} UTC-8 (PST).", client.Channels[0].Name, time);
                    }
                    if (e.PrivateMessage.Message.Contains("how") && e.PrivateMessage.Message.Contains("are") || e.PrivateMessage.Message.Contains("you"))
                    {
                        int feels = random.Next(0,6);
                        string imfeeling = feeling[feels];
                        client.SendRawMessage("PRIVMSG {0} :{1}.", client.Channels[0].Name, imfeeling);
                    }

                    if (e.PrivateMessage.Message.Contains("hug") || e.PrivateMessage.Message.Contains("hugs"))
                    {
                        client.SendRawMessage("PRIVMSG {0} :" + "\x01" + "ACTION hugs {1} back.\x01", client.Channels[0].Name, e.PrivateMessage.User.Nick);
                    }

                    if (e.PrivateMessage.Message.Contains("kiss") || e.PrivateMessage.Message.Contains("kisses") || e.PrivateMessage.Message.Contains("makes out"))
                    {
                        client.SendRawMessage("PRIVMSG {0} :" + "\x01" + "ACTION pushes {1} away.\x01", client.Channels[0].Name, e.PrivateMessage.User.Nick);
                        client.SendRawMessage("PRIVMSG {0} :Uhm...no kissing me, {1}.", client.Channels[0].Name, e.PrivateMessage.User.Nick);
                    }
                    if (e.PrivateMessage.Message.Contains("sex") || e.PrivateMessage.Message.Contains("f**k") || e.PrivateMessage.Message.Contains("f***s") || e.PrivateMessage.Message.Contains("humps") || e.PrivateMessage.Message.Contains("rapes") || e.PrivateMessage.Message.Contains("inappropriate") && e.PrivateMessage.Message.Contains("place") || e.PrivateMessage.Message.Contains("places"))
                    {
                        client.SendRawMessage("PRIVMSG {0} :" + "\x01" + "ACTION punches {1}.\x01", client.Channels[0].Name, e.PrivateMessage.User.Nick);
                        client.SendRawMessage("PRIVMSG {0} :DON'T TOUCH ME, {1}!", client.Channels[0].Name, e.PrivateMessage.User.Nick.ToUpper());
                        try
                        {
                            client.SendRawMessage("PRIVMSG CHANSERV :op");
                            try
                            {
                                client.KickUser(client.Channels[0].Name, e.PrivateMessage.User.Nick, "EXPLOIT!");
                            }
                            catch
                            {
                                client.SendRawMessage("PRIVMSG {0} :IF ONLY I COULD KICK YOU...!", client.Channels[0].Name);
                            }
                            client.SendRawMessage("PRIVMSG CHANSERV :deop");
                        }
                        catch
                        {
                            client.SendRawMessage("PRIVMSG {0} :I NEED AN ADMIN!", client.Channels[0].Name);
                        }
                    }

                    if (e.PrivateMessage.Message.Contains("joke"))
                    {
                        Jokes.Joke();
                        client.SendRawMessage("PRIVMSG {0} :{1}", client.Channels[0].Name, Jokes.thisjoke);
                        Console.WriteLine("The joke was " + Jokes.randJoke);
                    }

                }
                else
                {

                    if (e.PrivateMessage.Message.Contains("http://") || e.PrivateMessage.Message.Contains("https://") || e.PrivateMessage.Message.Contains("www.") || e.PrivateMessage.Message.Contains(".com") || e.PrivateMessage.Message.Contains(".net") || e.PrivateMessage.Message.Contains(".org") || e.PrivateMessage.Message.Contains(".ca") || e.PrivateMessage.Message.Contains(".us") || e.PrivateMessage.Message.Contains(".io") || e.PrivateMessage.Message.Contains(".mx") && !e.PrivateMessage.Message.Contains("dnp"))
                    {

                            try
                            {
                                string privatemessage = e.PrivateMessage.Message;
                                WebClient x = new WebClient();
                                client.SendRawMessage("NOTICE {0} :{0} Hold on, grabbing link title...", e.PrivateMessage.User.Nick);
                                string url = e.PrivateMessage.Message.Substring(e.PrivateMessage.Message.LastIndexOf("http://"));
                                string[] cleaned = url.Split(new char[] { ' ' }, 2);
                                if (e.PrivateMessage.Message.Contains(".xxx") || e.PrivateMessage.Message.Contains("p**n"))
                                {
                                    client.SendRawMessage("PRIVMSG {0} :Thanks for posting p**n here, {1}", client.Channels[0].Name, e.PrivateMessage.User.Nick);
                                    return;
                                }
                                string source = x.DownloadString(cleaned[0]);
                                string title = Regex.Match(source, @"\<title\b[^>]*\>\s*(?<Title>[\s\S]*?)\</title\>", RegexOptions.IgnoreCase).Groups["Title"].Value;
                                client.SendRawMessage("PRIVMSG {0} :{3} submitted a link : [ {1} ] - {2}.", client.Channels[0].Name, title, cleaned[0], e.PrivateMessage.User.Nick);
                            }
                            catch
                            {
                                //Do nothing.
                            }
                    }

                    }

            };

            while (true)
                ; //just keeps everything going
        }
Exemplo n.º 14
0
 public void IRC_Connect(string server, int port, string channel, string name)
 {
     _irc = new IrcClient(server, new IrcUser(name, name));
     _irc.ConnectAsync();
     _irc.ConnectionComplete += (s, e) => 
     {
         _irc.JoinChannel(channel);        
     };
     _irc.RawMessageRecieved += (s, e) => { InputParser.Parse(e.Message); };
 }
Exemplo n.º 15
0
        private static void RunBotTest()
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine ("Connecting...");
            Console.ForegroundColor = ConsoleColor.White;

            client = new IrcClient (ProgramSettings.settings.LastJoinedServer, new IrcUser (ProgramSettings.settings.LastUsedNick, "luigibot-oss"));
            client.ConnectionComplete += (s, e) =>
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine ("Connected! Joining {0}..", ProgramSettings.settings.LastJoinedChannel);
                Console.ForegroundColor = ConsoleColor.White;

                Console.ForegroundColor = ConsoleColor.Green;
                client.JoinChannel (ProgramSettings.settings.LastJoinedChannel);
                Console.WriteLine ("Connected!");
                Console.ForegroundColor = ConsoleColor.White;

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine ("Loading database..");
                Console.ForegroundColor = ConsoleColor.White;
                UsersSeenDatabase.LoadDatabase (client);

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine ("Success!");
                Console.ForegroundColor = ConsoleColor.White;

                updateUsersListThread.Start ();
            };
            client.UserPartedChannel += (s, e) =>
            {
                DateTime now = DateTime.Now;
                foreach (IrcUserAndSeen u in UsersSeenDatabase.UsersSeenDatabase)
                {
                    if (u.User == e.User)
                        UsersSeenDatabase.UsersSeenDatabase.Remove (u);
                }
                UsersSeenDatabase.UsersSeenDatabase.Add (new IrcUserAndSeen (e.User, now));

                //Console.Beep(4400, 1000);
                Console.WriteLine ("Added new user to database {0} left at {1}", e.User.Nick, now.ToString ());
            };
            client.UserJoinedChannel += (s, e) =>
            {
                if (e.User.Nick.ToLower () == "luigifan2010")
                {
                    client.SendAction ("welcomes daddy!", client.Channels [0].Name);
                    return;
                }
                if (ProgramSettings.settings.WelcomeUserEnabled)
                {
                    if(ProgramSettings.settings.WelcomeMessage.Contains("/me"))
                    {
                        //set substring 4 to account for "/me" and the space after
                        client.SendAction(String.Format(ProgramSettings.settings.WelcomeMessage.Substring(4), e.User.Nick), client.Channels[0].Name);
                    }
                    else
                    {
                        client.SendRawMessage("PRIVMSG {0} :{1}",
                            client.Channels[0].Name,
                            String.Format(ProgramSettings.settings.WelcomeMessage, e.User.Nick));
                    }
                }
            };
            client.NoticeRecieved += (s, e) =>
            {
                Console.WriteLine ("NOTICE FROM {0}: {1}", e.Source, e.Notice.ToString ());
            };
            client.ChannelMessageRecieved += (s, e) =>
            {
                var channel = client.Channels [e.PrivateMessage.Source];
                Console.WriteLine ("{0} - {1}: {2}", e.PrivateMessage.Source, e.PrivateMessage.User, e.PrivateMessage.Message); //just output the stuff boss

                if (e.PrivateMessage.Message.StartsWith ("!"))
                {
                    client.SendRawMessage("PRIVMSG {0} :Commands are now prefixed with a ? instead of an !.", client.Channels[0].Name);
                    InterpretCommand (e.PrivateMessage.Message, e.PrivateMessage.User, client);
                }
                else if (e.PrivateMessage.Message.StartsWith ("?"))
                {
                    InterpretCommand (e.PrivateMessage.Message, e.PrivateMessage.User, client);
                }
            };
            client.RawMessageRecieved += (s, e) =>
            {
                //:[email protected] QUIT :Client Quit
                string rawMessage = e.Message.ToString ();
                string[] split = rawMessage.Split (new char[] { ' ' }, 3);
                if (split.Length > 0)
                {
                    if (split [1] == "QUIT")
                    {
                        string[] username = split [0].Split (new char[] { '!' }, 2);
                        IrcUser ee = new IrcUser (username [0].ToString ().Trim (':'), username [1].ToString ().Trim ('~'));
                        DateTime now = DateTime.Now;
                        foreach (IrcUserAndSeen u in UsersSeenDatabase.UsersSeenDatabase)
                        {
                            if (u.User == ee)
                                UsersSeenDatabase.UsersSeenDatabase.Remove (u);
                        }
                        UsersSeenDatabase.UsersSeenDatabase.Add (new IrcUserAndSeen (ee, now));
                        Console.WriteLine ("Added new user to database {0} left at {1} (Quit)", ee.Nick, now.ToString ());
                    }
                }

            };
            client.ConnectAsync ();

            while (true)
                ; //just keeps everything going
        }
Exemplo n.º 16
0
 public void Connect()
 {
     _client.ConnectAsync();
     Connecting = true;
 }
Exemplo n.º 17
0
        private static void Main(string[] args)
        {
            var options = new Opciones();

            if (!Parser.Default.ParseArguments(args, options))
            {
                var ht = HelpText.AutoBuild(options);

                ht.Copyright = new CopyrightInfo("Kevin López Brante", 2015);

                Console.WriteLine(ht);

                Environment.Exit(2);
            }
            else
            {
                var config = Config.LeerDesdeArchivo(options.ConfigurationFile);

                var spotifyRegex = new Regex(@"(?:https?:\/\/)?(?:open\.spotify\.com\/|spotify:)track(?:\/|:)(\w*)");

                var ytRegex = new Regex(@"(?:https?:\/\/)?(?:www\.)?youtu\.?be(?:\.com)?\/(?:watch\?v=|embed\/)?(\w*)");

                var client = new IrcClient($"{config.Hostname}:{config.Port}",
                    new IrcUser(config.Nick, config.Ident, config.Password));

                client.ConnectionComplete += (s, e) =>
                {
                    Console.WriteLine($"{DateTime.Now} ¡Conectado al servidor!");
                    foreach (var channel in config.Channels)
                    {
                        client.JoinChannel(channel);
                        Console.WriteLine($"{DateTime.Now} Uniéndose al canal {channel}");
                    }
                };

                client.RawMessageRecieved += (s, e) =>
                {
                    Console.WriteLine($"{DateTime.Now} <= {e.Message}");
                };

                client.RawMessageSent += (s, e) =>
                {
                    Console.WriteLine($"{DateTime.Now} => {e.Message}");
                };

                client.ChannelMessageRecieved += (s, e) =>
                {

                    var channel = client.Channels[e.PrivateMessage.Source];

                    Console.WriteLine($"{DateTime.Now} {channel.Name}/{e.PrivateMessage.User}: {e.PrivateMessage.Message}");

                    if (spotifyRegex.IsMatch(e.PrivateMessage.Message))
                    {
                        Console.WriteLine($"{DateTime.Now} Capturado enlace de Spotify.");
                        try
                        {
                            var mx = spotifyRegex.Match(e.PrivateMessage.Message);
                            Console.WriteLine($"{DateTime.Now} Obteniendo info de pista...");
                            var spotify = SpotifyAPI.obtenerPista(mx.Groups[1].Value);
                            Console.WriteLine($"{DateTime.Now} Info obtenida.");
                            var ts = TimeSpan.FromMilliseconds(spotify.duration_ms);

                            string artj = string.Join(", ", spotify.artists.Take(spotify.artists.Count - 1)) + (spotify.artists.Count <= 1 ? "" : " y ") + spotify.artists.LastOrDefault();

                            var ou = $"\x02{spotify.name}\x02 (\x1D{ts.ToString("hh':'mm':'ss")}\x1D) por \x02{artj}\x02 en \x02{spotify.album}\x02 (\x1D{"disco"} {spotify.disc_number}, pista {spotify.track_number}\x1D)";

                            channel.SendMessage(ou);
                            Console.WriteLine($"{DateTime.Now} Mensaje enviado.");
                        }
                        catch (Exception exception)
                        {
                            Console.WriteLine(exception);
                            channel.SendMessage(exception.Message);
                        }

                    }

                    if (e.PrivateMessage.Message.StartsWith("!spotify"))

                    {
                        Console.WriteLine($"{DateTime.Now} Capturado comando Buscar en Spotify.");
                        if (e.PrivateMessage.Message.StartsWith("!spotify "))
                        {
                            var x = e.PrivateMessage.Message.Replace("!spotify ", "");
                            var sps = SpotifySearch.buscar(x);
                            Console.WriteLine($"{DateTime.Now} Buscando \"{x}\" en Spotify...");
                            channel.SendMessage($"{e.PrivateMessage.User.Nick}, te mandé los resultados por privado.");
                            for (int index = 0; index < sps.tracks.items.Count; index++)
                            {
                                var spotify = sps.tracks.items[index];
                                var ts = TimeSpan.FromMilliseconds(spotify.duration_ms);

                                string artj = string.Join(", ", spotify.artists.Take(spotify.artists.Count - 1)) +
                                              (spotify.artists.Count <= 1 ? "" : " y ") +
                                              spotify.artists.LastOrDefault();

                                var ou =
                                    $"{index+1}: \x02{spotify.name}\x02 (\x1D{ts.ToString("hh':'mm':'ss")}\x1D) por \x02{artj}\x02 en \x02{spotify.album}\x02: spotify:track:{spotify.id}";
                                client.SendMessage(ou, e.PrivateMessage.User.Nick);
                            }
                        }
                        else
                        {
                            channel.SendMessage("Debes poner algo después de !spotify.");
                        }
                    }

                    if (ytRegex.IsMatch(e.PrivateMessage.Message))
                    {
                        Console.WriteLine($"{DateTime.Now} Capturado enlace de YouTube.");
                        try
                        {
                            var mx = ytRegex.Match(e.PrivateMessage.Message);
                            Console.WriteLine($"{DateTime.Now} Obteniendo info de video...");
                            var youTube = YouTube.GetInfo(mx.Groups[1].Value);
                            Console.WriteLine($"{DateTime.Now} Info obtenida.");
                            _item = youTube.Items[0];
                            var ts = _item.ContentDetails.Duracion();

                            var ou = $"\x02{_item.Snippet.Title}\x02 (\x1D{ts.ToString("hh':'mm':'ss")}\x1D) por \x02{_item.Snippet.ChannelTitle}\x02 el \x02{_item.Snippet.PublishedAt.ToString(CultureInfo.GetCultureInfoByIetfLanguageTag("es"))}\x02";

                            channel.SendMessage(ou);
                            Console.WriteLine($"{DateTime.Now} Mensaje enviado.");
                        }
                        catch (Exception exception)
                        {
                            Console.WriteLine(exception);
                            channel.SendMessage(exception.Message);
                        }

                    }

                    if (e.PrivateMessage.Message.StartsWith("!youtube"))

                    {
                        Console.WriteLine($"{DateTime.Now} Capturado comando Buscar en YouTube.");
                        if (e.PrivateMessage.Message.StartsWith("!youtube "))
                        {
                            var x = e.PrivateMessage.Message.Replace("!youtube ", "");
                            var sps = YouTubeSearch.buscar(x, config.ApiKeys.YtData);
                            Console.WriteLine($"{DateTime.Now} Buscando \"{x}\" en YouTube...");

                            channel.SendMessage($"{e.PrivateMessage.User.Nick}, te mandé los resultados por privado.");
                            for (int index = 0; index < sps.Items.Count; index++)
                            {
                                var yt = sps.Items[index];
                                var ou = $"{index + 1}: \x02{yt.Snippet.Title}\x02, publicado por \x02{yt.Snippet.ChannelTitle}\x02 el {yt.Snippet.PublishedAt.ToString(CultureInfo.GetCultureInfoByIetfLanguageTag("es"))}: https://www.youtube.com/watch?v={yt.Id.VideoId}";

                                client.SendMessage(ou, e.PrivateMessage.User.Nick);

                            }
                        }
                        else
                        {
                            channel.SendMessage("Debes poner algo después de !spotify.");
                        }
                    }

                };
                Console.WriteLine($"{DateTime.Now} Conectando al servidor {config.Hostname}:{config.Port} como {config.Nick}...");
                client.ConnectAsync();

                while (true)
                {
                    Thread.Sleep(500);
                }
            }
        }
Exemplo n.º 18
0
        private static void RunBotTest()
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine ("Connecting...");
            Console.ForegroundColor = ConsoleColor.White;

            client = new IrcClient (ProgramSettings.settings.LastJoinedServer, new IrcUser (ProgramSettings.settings.LastUsedNick, "luigibot-oss"));
            client.ConnectionComplete += (s, e) =>
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine ("Connected! Joining {0}..", ProgramSettings.settings.LastJoinedChannel);
                Console.ForegroundColor = ConsoleColor.White;

                Console.ForegroundColor = ConsoleColor.Green;
                client.JoinChannel (ProgramSettings.settings.LastJoinedChannel);
                Console.WriteLine ("Connected!");
                Console.ForegroundColor = ConsoleColor.White;

                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("Attempting NickServ authentication..");
                Console.ForegroundColor = ConsoleColor.White;
                if (ProgramSettings.settings.NickServPass.Trim() != "")
                {
                    client.SendRawMessage("PRIVMSG NickServ :IDENTIFY {0}", encrypter.DecryptString(ProgramSettings.settings.NickServPass));
                }
                else
                    Console.WriteLine("No NickServ password set! Set using /setnickservpass`");

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine ("Loading database..");
                Console.ForegroundColor = ConsoleColor.White;
                UsersSeenDatabase.LoadDatabase (client);

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine ("Success!");
                Console.ForegroundColor = ConsoleColor.White;

                updateUsersListThread.Start ();
            };
            client.UserPartedChannel += (s, e) =>
            {
                DateTime now = DateTime.Now;
                foreach (IrcUserAndSeen u in UsersSeenDatabase.UsersSeenDatabase)
                {
                    if (u.User.Nick.ToLower() == e.User.Nick.ToLower())
                    {
                        UsersSeenDatabase.UsersSeenDatabase.Remove (u);
                        break;
                    }
                }
                UsersSeenDatabase.UsersSeenDatabase.Add (new IrcUserAndSeen (e.User, now));

                //Console.Beep(4400, 1000);
                Console.WriteLine ("Added new user to database {0} left at {1}", e.User.Nick, now.ToString ());
            };
            client.UserJoinedChannel += (s, e) =>
            {
                if (e.User.Nick.ToLower () == "axiom")
                {
                    client.SendAction ("welcomes daddy!", client.Channels [0].Name);
                    return;
                }
                if (ProgramSettings.settings.WelcomeUserEnabled)
                {
                    if (e.User.Nick != client.User.Nick)
                    {
                        if (ProgramSettings.settings.WelcomeMessage.Contains("/me"))
                        {
                            //set substring 4 to account for "/me" and the space after
                            client.SendAction(String.Format(ProgramSettings.settings.WelcomeMessage.Substring(4), e.User.Nick), client.Channels[0].Name);
                        }
                        else
                        {
                            client.SendRawMessage("PRIVMSG {0} :{1}",
                                client.Channels[0].Name,
                                String.Format(ProgramSettings.settings.WelcomeMessage, e.User.Nick));
                        }
                    }
                }
            };
            client.NoticeRecieved += (s, e) =>
            {
                Console.WriteLine ("NOTICE FROM {0}: {1}", e.Source, e.Notice.ToString ());
            };
            bool checkForNextHighfive = false;
            string firstuser = "";
            client.ChannelMessageRecieved += (s, e) =>
            {
                if (checkForNextHighfive)
                {
                    if (e.PrivateMessage.Message.Trim() == "\\o")
                    {
                        if(e.PrivateMessage.User.Nick != firstuser)
                            client.SendRawMessage("PRIVMSG {0} :{1} o/ *HIGHFIVED* \\o {2}!", client.Channels[0].Name, firstuser, e.PrivateMessage.User.Nick);
                    }
                    checkForNextHighfive = false;
                }

                var channel = client.Channels [e.PrivateMessage.Source];
                Console.WriteLine ("{0} - {1}: {2}", e.PrivateMessage.Source, e.PrivateMessage.User, e.PrivateMessage.Message); //just output the stuff boss

                if (e.PrivateMessage.Message.StartsWith(ProgramSettings.settings.CommandPrefix.ToString()))
                {
                    InterpretCommand(e.PrivateMessage.Message, e.PrivateMessage.User, client);
                }
                else if(e.PrivateMessage.Message.Contains("http://") || e.PrivateMessage.Message.Contains("https://"))
                {
                    if(ProgramSettings.settings.UrlParsingEnabled)
                            UrlSubmitted(e);
                }
                else if (e.PrivateMessage.Message.StartsWith(client.User.Nick))
                {
                    if (e.PrivateMessage.Message.Contains("help"))
                    {
                        client.SendRawMessage("PRIVMSG {0} :The current command prefix is: '{1}'. You can also find a list of my commands here: https://github.com/Luigifan/Luigibot/wiki/Luigibot-Commands",
                            client.Channels[0].Name, ProgramSettings.settings.CommandPrefix);
                    }
                }
                else if (e.PrivateMessage.Message.Trim() == "o/")
                {
                    checkForNextHighfive = true;
                    firstuser = e.PrivateMessage.User.Nick;
                }

            };
            client.ModeChanged += (s, e) =>
            {
                if (e.User.Nick == client.User.Nick)
                {
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("Mode changed, added: " + e.Change);
                    //string[] split = e.Change.Split(new char[] { ' ' }, 2);
                    //client.User.Mode += split[0].Trim('+');
                    Console.WriteLine("New mode: " + client.User.Mode);
                    Console.ForegroundColor = ConsoleColor.White;
                }
            };
            client.RawMessageRecieved += (s, e) =>
            {
                //:[email protected] QUIT :Client Quit
                string rawMessage = e.Message.ToString ();
                string[] split = rawMessage.Split (new char[] { ' ' }, 3);
                if (split.Length > 0)
                {
                    if (split [1] == "QUIT")
                    {
                        string[] username = split [0].Split (new char[] { '!' }, 2);
                        IrcUser ee = new IrcUser (username [0].ToString ().Trim (':'), username [1].ToString ().Trim ('~'));
                        DateTime now = DateTime.Now;
                        foreach (IrcUserAndSeen u in UsersSeenDatabase.UsersSeenDatabase)
                        {
                            if (u.User.Nick.ToLower() == ee.Nick.ToLower())
                            {
                                UsersSeenDatabase.UsersSeenDatabase.Remove (u);
                                break;
                            }
                        }
                        UsersSeenDatabase.UsersSeenDatabase.Add (new IrcUserAndSeen (ee, now));
                        Console.WriteLine ("Added new user to database {0} left at {1} (Quit)", ee.Nick, now.ToString ());
                    }
                }

            };
            client.ConnectAsync ();

            while (true)
                ; //just keeps everything going
        }
Exemplo n.º 19
0
        public override void OnServerStart()
        {
            m_User = new IrcUser(settings.Nick, settings.Ident, settings.NickServ, settings.RealName);
            m_Client = new IrcClient(settings.Server, m_User, false);

            m_Client.ConnectAsync();
            m_Client.ConnectionComplete += (s, e) =>
            {
                DarkLog.Debug("[DarkChat] Connected to " + settings.Server);
                foreach (string channel in settings.Channels)
                {
                    DarkLog.Debug("[DarkChat] Joining " + channel);
                    m_Client.JoinChannel(channel);
                }
            };
            m_Client.ChannelMessageRecieved += (s, e) =>
            {
                string channel = e.PrivateMessage.Source.Substring(1);
                DarkMultiPlayerServer.Messages.Chat.SendChatMessageToChannel(channel, String.Format("[{0}] <{1}> {2}", DateTime.Now.ToString("HH:mm:ss"), e.PrivateMessage.User.Nick, e.PrivateMessage.Message));
            };
            m_Client.NetworkError += (s, e) => DarkLog.Debug("[DarkChat] Connection Error: " + e.SocketError);
        }
Exemplo n.º 20
0
 public IrcProvider()
 {
     client = new IrcClient(Config.IrcServer, new IrcUser("Consensusbot", "ConsensusBot"));
      client.ConnectAsync();
 }
Exemplo n.º 21
0
        private void StartIrc()
        {
            var user = new IrcUser("");
            if (Properties.Settings.Default.nickserv == string.Empty)
                user = new IrcUser("twitchplaysagame", "twitchplaysagame");
            else
                user = new IrcUser(Properties.Settings.Default.user, Properties.Settings.Default.user);
            client = new IrcClient(Properties.Settings.Default.server, user);
            client.NetworkError += (s, e) => WriteConsole("Error: " + e.SocketError);

            client.ChannelMessageRecieved += (s, e) =>
            {
                ParseInput(e.PrivateMessage.User.Nick + ":" + e.PrivateMessage.Message);
            };
            client.ConnectionComplete += (s, e) =>
            {
                client.SendRawMessage("PRIVMSG {0} :{1}", "nickserv", "identify " + Properties.Settings.Default.nickserv);
                client.Channels.Join(Properties.Settings.Default.room);
                WriteConsole("Connected");
            };
            client.ConnectAsync();

            this.WriteConsole("Starting irc service");
            started = true;
            buttonStart.Text = "Stop";
        }
Exemplo n.º 22
0
        // Start the bot
        public IRCBot()
        {
            // Load the settings
            if (File.Exists(Directory.GetCurrentDirectory() + "/Settings/settings.json"))
                settings = Utils.Load<Settings>();
            else
                Utils.Save(ref settings);

            // Load the words
            if (File.Exists(Directory.GetCurrentDirectory() + "/Settings/words.json"))
                words = Utils.Load<Words>();
            else
                Utils.Save(ref words);

            // Load the seen_tells'
            if (File.Exists(Directory.GetCurrentDirectory() + "/Settings/seen_tell.json"))
                seenTell = Utils.Load<Seen_Tell>();
            else
                Utils.Save(ref seenTell);

            /*
            // Load the aliase
            if (File.Exists(Directory.GetCurrentDirectory() + "/Settings/alias.json"))
                alias = Utils.Load<Alias>();
            else
                Utils.Save(ref alias);
            */

            // Create the randomizer
            BaseUtils.random = new Random();

            // Startup
            BaseUtils.LogSpecial(settings.name + " - a friendly IRC bot!");

            // Connection
            client = new IrcClient(settings.host, new IrcUser(settings.name, settings.name));
            client.ConnectionComplete += (s, e) =>
            {
                client.SendMessage("identify " + settings.pw, new[] { "NickServ" });
                settings.channels.ForEach(c => client.JoinChannel(c));
            };
            client.ChannelMessageRecieved += Client_ChannelMessageRecieved;
            client.UserKicked += Client_UserKicked;
            //client.NickChanged += Client_NickChanged;
            client.ConnectAsync();
            AppDomain.CurrentDomain.ProcessExit += (s, e) =>
            {
                client.Quit();
                BaseUtils.Writer().WriteLine("[Stop] ============ " + DateTime.UtcNow.ToShortDateString() + " " + DateTime.UtcNow.ToLongTimeString() + " ============");
                BaseUtils.Writer().Close();
            };

            // Stop GC
            GC.KeepAlive(this);
        }