Example #1
0
        public void OnMessage(object sender, MessageEventArgs e)
        {
            if (e.Message.Text == null)
            {
                return;
            }
            //DATA Groups: 0 = Original message, 1 = Text, 2 = date, 3 = time, 4 = quota
            if (Regex.IsMatch(e.Message.Text, @"\/addevent[\S]* '([\s\S]*)' ([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}) ([0-9]{4}) \+([0-9]*)", RegexOptions.IgnoreCase))
            {
                Admin admin = database.FindAdmin(e.Message.From.Id, e.Message.Chat.Id);                //checks if the user that has sent the command is an admin of that group
                int   pollId;
                if (e.Message.Chat.Type != ChatType.Private)
                {
                    if (admin != null && e.Message.Chat.Id == admin.GroupId)
                    {
                        Match data = Regex.Match(e.Message.Text, @"\/addevent[\S]* '([\s\S]*)' ([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}) ([0-9]{4}) \+([0-9]*)", RegexOptions.IgnoreCase);
                        var   poll = new Poll()
                        {
                            UserId     = admin.UserId,
                            GroupId    = admin.GroupId,
                            Title      = data.Groups[1].Value,
                            EventDate  = ParseDate(data.Groups[2].Value, data.Groups[3].Value),
                            EventQuota = int.Parse(data.Groups[4].Value)
                        };
                        System.Threading.Tasks.Task <Message> MsgId = botClient.SendTextMessageAsync(new ChatId(e.Message.Chat.Id), "Loading Poll...");
                        poll.MessageId = MsgId.Result.MessageId;
                        pollId         = database.AddPoll(poll);
                        InlineKeyboardMarkup markup = Program.GetReplyMarkUp(e.Message.Chat.Id, pollId);
                        botClient.EditMessageTextAsync(new ChatId(e.Message.Chat.Id), MsgId.Result.MessageId, Program.GetText(pollId), replyMarkup: markup, parseMode: ParseMode.Html);
#if DEBUG
                        var debugPoll = new Poll()
                        {
                            UserId     = e.Message.From.Id,
                            GroupId    = e.Message.Chat.Id,
                            Title      = data.Groups[1].Value,
                            EventDate  = ParseDate(data.Groups[2].Value, data.Groups[3].Value),
                            EventQuota = int.Parse(data.Groups[4].Value)
                        };
                        botClient.SendTextMessageAsync(
                            new ChatId(e.Message.Chat.Id),
                            string.Format("TITLE {0}\nUserID {1}\nGroupID {2}\nDATETIME {3}\nQUOTA {4}", debugPoll.Title, debugPoll.UserId, debugPoll.GroupId, debugPoll.EventDate, debugPoll.EventQuota));
#endif
                    }
                }
                else
                {
                    botClient.SendTextMessageAsync(new ChatId(e.Message.Chat.Id), "Can't create event polls in private chats.");
                }
            }
            else if (e.Message.Text.ToLower().StartsWith("/addevent"))
            {
                botClient.SendTextMessageAsync(new ChatId(e.Message.Chat.Id), "Wrong syntax. use: /addevent '<title>' <date> <time> +<minium number of partecipants>");
            }
        }
Example #2
0
        public static string GetText(int pollId)
        {
            Poll poll   = database.GetPoll(pollId);
            var  closed = poll.EventDate < DateTime.Now;
            IEnumerable <Vote> votes = database.GetVotesInPoll(pollId);

            Vote[] Present = votes.Where(x => x.Choice == EVote.Present).ToArray();
            Vote[] Maybe   = votes.Where(x => x.Choice == EVote.Maybe).ToArray();
            Vote[] Absent  = votes.Where(x => x.Choice == EVote.Absent).ToArray();
            var    text    = "<b>πŸ“°";

            if (closed)
            {
                text += poll.Title + $"\nβ€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”\n<b>POLL CHIUSO</b>\n{poll.EventDate.Day:D2}/{poll.EventDate.Month:D2}/{poll.EventDate.Year:D4} {poll.EventDate.Hour:D2}:{poll.EventDate.Minute:D2}\n\nβœ…Presenti: {Present.Length}</b>\n";
            }
            else
            {
                text += poll.Title + $"\nβ€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”\n{poll.EventDate.Day:D2}/{poll.EventDate.Month:D2}/{poll.EventDate.Year:D4} {poll.EventDate.Hour:D2}:{poll.EventDate.Minute:D2}\n\nβœ…Presenti: {Present.Length}</b>\n";
            }
            foreach (Vote people in Present)
            {
                text += "    β€’ " + people.Username + "\n";
            }
            text += $"\n<b>⚠️ Forse: {Maybe.Length}</b>\n";
            foreach (Vote people in Maybe)
            {
                text += "    β€’ " + people.Username + "\n";
            }
            text += $"\n<b>❌ Assente: {Absent.Length}</b>\n";
            foreach (Vote people in Absent)
            {
                text += "    β€’ " + people.Username + "\n";
            }
            if (!closed)
            {
                text += $"\n<b>Slot Minimi:</b> {Present.Length} + ({Maybe.Length}) / {poll.EventQuota}";
            }
            else
            {
                text += $"\n<b>Partecipanti: {Present.Length} + ?{Maybe.Length}/{poll.EventQuota} minimi.";
            }
            return(text);
        }