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>"); } }
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); }