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); } }
protected override string ProcessMessage(string nick, string message) { if (!message.StartsWith("~events")) { return(null); } var msgBuilder = new StringBuilder(); foreach (var ev in EventConnection.GetEvents()) { msgBuilder.AppendFormat("{1} on {0}, {2} gamers registered. ", ev.Date.ToString("ddd, MMMM d"), ev.Location, ev.Registered.Count()); } return(msgBuilder.ToString()); }
protected override string ProcessMessage(string nick, string message) { if (!message.StartsWith("~nextevent")) { return(null); } try { var ev = EventConnection.GetEvents().OrderBy(e => e.Date).FirstOrDefault(); return((ev == null) ? "No next event." : String.Format("Next Event: {0} at {1}. Registered [{3}]: {2}", ev.Date.ToString("ddd, MMMM d"), ev.Location, ev.Registered.Explode(","), ev.Registered.Count())); } catch (MySqlException ex) { this.Stop(); return("Registrations module b0rked: " + ex.Message); } }