public async Task meetupCommand(string meetup) { KnownMeetUp thisMup = GetThisMeetUp(meetup); EmbedBuilder b = new EmbedBuilder(); if (thisMup != null) { b.WithTitle($"Meetup {thisMup.Name}"); b.WithDescription($"The next meetup for {thisMup.Name}"); b.WithColor(new Color(0, 170, 255)); if (!string.IsNullOrEmpty(thisMup.URL)) { HttpWebRequest webClient = (HttpWebRequest)WebRequest.Create(thisMup.URL); using (HttpWebResponse response = (HttpWebResponse)webClient.GetResponse()) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { List <MeetUpMeet> data = Newtonsoft.Json.JsonConvert.DeserializeObject <MeetUpMeet[]>(reader.ReadToEnd()).ToList(); if (data != null && data.Count > 0) { // Get Latest Meetup. MeetUpMeet latest = data.OrderBy(m => m.local_date).OrderBy(m => m.local_time).ToList()[0]; b.AddInlineField("Name:", $"{latest.name}"); b.AddInlineField("Date:", $"{latest.local_date.ToShortDateString()} {latest.local_time}"); b.AddInlineField("Venue:", $"{latest.venue.name}"); b.AddInlineField("Address:", $"{latest.venue.address_1}, {latest.venue.city}, {latest.venue.localized_country_name}"); } else { b.WithFooter("There are no Upcoming Meetups..."); } } } b.WithUrl(thisMup.Link); } else { b.WithDescription($"{thisMup.Name} does not use MeetUp, click the name to find out more..."); b.WithUrl(thisMup.Link); } } else { b.WithTitle($"Meetup not found"); b.WithDescription($"The next meetup for [{meetup}] does not exist, try listing what meetups we can view..."); b.WithColor(new Color(0, 170, 255)); } await Context.Channel.SendMessageAsync("", false, b); }
protected void TimeSpanBefore(MeetUpMeet latest) { TimeSpan threadWait = new TimeSpan(0, 3, 0, 0, 0); // Need this to be in a config file? while (latest != null && DateTime.Now.Add(Duration) < latest.local_date) { Thread.Sleep((int)threadWait.TotalMilliseconds); } GetNext = true; }
protected MeetUpMeet GetNextMeetup(KnownMeetUp thisMup, int offset = 0) { if (!string.IsNullOrEmpty(thisMup.URL)) { HttpWebRequest webClient = (HttpWebRequest)WebRequest.Create(thisMup.URL); using (HttpWebResponse response = (HttpWebResponse)webClient.GetResponse()) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { List <MeetUpMeet> data = Newtonsoft.Json.JsonConvert.DeserializeObject <MeetUpMeet[]>(reader.ReadToEnd()).ToList(); if (data != null && data.Count > 0) { // Get Latest Meetup. MeetUpMeet latest = data.OrderBy(m => m.local_date).OrderBy(m => m.local_time).ToList()[offset]; return(latest); } } } } return(null); }
public void Broadcast() { Live = true; while (Live) { MeetUpMeet latest = GetNextMeetup(MeetUp); switch (BroadcastType) { case MeetUpBroadCastTypeEnum.Reoccuring: Reoccuring(); break; case MeetUpBroadCastTypeEnum.TimeSpanBefore: if (DateTime.Now > latest.local_date) // last one must have passed now, get latest again. { GetNext = false; } if (GetNext) { latest = GetNextMeetup(MeetUp, 1); } TimeSpanBefore(latest); break; case MeetUpBroadCastTypeEnum.Weekly: Weekly(); break; case MeetUpBroadCastTypeEnum.Monthly: Monthly(); break; } if (Live) // If no longer live no need to broadcast... { EmbedBuilder msg = new EmbedBuilder(); msg.WithTitle($"Meetup {MeetUp.Name}"); msg.WithDescription($"The next meetup for {MeetUp.Name}"); msg.WithColor(Color.DarkPurple); if (latest != null) { msg.AddInlineField("Name:", $"{latest.name}"); msg.AddInlineField("Date:", $"{latest.local_date.ToShortDateString()} {latest.local_time}"); msg.AddInlineField("Venue:", $"{latest.venue.name}"); msg.AddInlineField("Address:", $"{latest.venue.address_1}, {latest.venue.city}, {latest.venue.localized_country_name}"); } else { msg.WithDescription($"{MeetUp.Name} does not use MeetUp, click the name to find out more..."); msg.WithUrl(MeetUp.Link); } Channel.SendMessageAsync("", false, msg); } } }