private void Listener() { HashSet <string> nextEventPlayers = new HashSet <string> (EventConnection.GetEvents().OrderBy(e => e.Date).First().Registered); while (this.listening) { var nextEvent = EventConnection.GetEvents().OrderBy(e => e.Date).First(); var unchanged = nextEventPlayers.Intersect(nextEvent.Registered); var joiningPlayers = nextEvent.Registered.Where(p => !unchanged.Contains(p)); foreach (var p in joiningPlayers) { messanger.SendToChannel(p + " registered for the next event (" + nextEvent.Date.ToString("ddd, MMMM d") + " at " + nextEvent.Location + ")"); } var leavingPlayers = nextEventPlayers.Where(p => !unchanged.Contains(p)); foreach (var p in leavingPlayers) { messanger.SendToChannel(p + " unregistered for the next event (" + nextEvent.Date.ToString("ddd, MMMM d") + " at " + nextEvent.Location + ")"); } nextEventPlayers = new HashSet <string> (nextEvent.Registered); Thread.Sleep(15000); } }
private void OnConnected(object sender, EventArgs e) { if (messanger != null && !justStarting) { messanger.SendToChannel("Connected to Gablarski server"); } }
private void Listener() { while (this.listening) { foreach (RssFeedElement feed in this.Config.Feeds) { DateTime lastChecked = DateTime.Now; RssFeed f = null; if (this.oldFeeds.ContainsKey(feed)) { f = RssFeed.Read(this.oldFeeds[feed].Value); lastChecked = this.oldFeeds[feed].Key; this.oldFeeds[feed] = new KeyValuePair <DateTime, RssFeed> (DateTime.Now, f); } else { f = RssFeed.Read(feed.FeedURL); this.oldFeeds.Add(feed, new KeyValuePair <DateTime, RssFeed> (DateTime.Now, f)); } for (int c = 0; c < f.Channels.Count; ++c) { var channel = f.Channels[c]; foreach (RssItem item in channel.Items.Cast <RssItem>().OrderBy(i => i.PubDate)) { if (item.PubDate.ToUniversalTime() < lastChecked.ToUniversalTime()) { continue; } messanger.SendToChannel(feed.Name + ": " + item.Title + " | " + item.Link); } } } Thread.Sleep(60000); } }