示例#1
0
        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);
        }
示例#2
0
        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;
        }
示例#3
0
        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);
        }
示例#4
0
        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);
                }
            }
        }