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(); }
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(); }
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) ; }
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(); }
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); }
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) ; }
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(); }
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(); }
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(); }
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..."); }
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) { } }
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 }
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); }; }
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 }
public void Connect() { _client.ConnectAsync(); Connecting = true; }
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); } } }
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 }
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); }
public IrcProvider() { client = new IrcClient(Config.IrcServer, new IrcUser("Consensusbot", "ConsensusBot")); client.ConnectAsync(); }
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"; }
// 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); }