protected override ContentParts GetContent(Strings strings, string apikey, bool channel = false, int?offset = null, bool moderatePane = true) { Strings.langs oldLang = strings.CurrentLang; strings.SetLanguage(lang); string text; InlineKeyboardMarkup inlineKeyboard = new InlineKeyboardMarkup(); inlineKeyboard.InlineKeyboard = new List <List <InlineKeyboardButton> >(); string description; { description = StringEdit.CurrentCulture.TextInfo.ToTitleCase(anony.ToString()) + " " + pollType + ": " + pollText + ": "; int optionCount = 0; text = "\ud83d\udcca <b>" + HtmlSpecialChars.Encode(pollText).UnmarkupUsernames() + "</b>" + (!string.IsNullOrEmpty(pollDescription) ? ("\n" + HtmlSpecialChars.Encode(pollDescription) + "\n") : "\n"); foreach (KeyValuePair <string, List <User> > x in pollVotes) { int votingUserCount = x.Value.Count; text += "\n<b>" + HtmlSpecialChars.Encode(x.Key).UnmarkupUsernames() + "</b> [" + votingUserCount + "]\n"; if (anony == EAnony.personal) { if (x.Value.Count > 0) { User last = x.Value.Last(); foreach (User user in x.Value) { text += "\u200E" + (user == last ? "└" : "├") + " " + HtmlSpecialChars.Encode((user.FirstName + (user.LastName != null ? " " + user.LastName : "")).Replace("\u200F", "").Replace("\u202B", "").Replace("\u202E", "").Truncate(25)) + "\n"; } } } if (!closed && !channel) { List <InlineKeyboardButton> thisRow = new List <InlineKeyboardButton>(1); thisRow.Add((InlineKeyboardButton)InlineKeyboardButton.Create(x.Key + " - " + votingUserCount, callbackData: Cryptography.Encrypt(chatId + ":" + pollId + ":" + optionCount, apikey))); inlineKeyboard.InlineKeyboard.Add(thisRow); } description += x.Key + ", "; optionCount++; } description = description.Substring(0, description.Length - 2); int userCount = people.Count; if (channel) { inlineKeyboard.InlineKeyboard.Add(new List <InlineKeyboardButton> { InlineKeyboardButton.Create(strings.GetString(Strings.stringsList.buttonVote), url: "https://telegram.me/" + Globals.Botname + "bot?start=" + Cryptography.Encrypt("vote:" + ChatId.ToString() + ":" + PollId.ToString(), apikey)) }); } text += "\n" + string.Format(strings.GetString(userCount == 0 ? Strings.stringsList.rendererZeroVotedSoFar : (userCount == 1 ? Strings.stringsList.rendererSingleVotedSoFar : Strings.stringsList.rendererMultiVotedSoFar)), userCount); if (delete || closed) { inlineKeyboard = null; text += "\n" + strings.GetString(Strings.stringsList.pollClosed); } } strings.SetLanguage(oldLang); return(new ContentParts(text, inlineKeyboard, description)); }
protected override ContentParts GetContent(Strings strings, string apikey, bool channel = false, int?offset = default(int?), bool moderatePane = true) { ContentParts content = base.GetContent(strings, apikey, channel, offset); Strings.langs oldLang = strings.CurrentLang; strings.SetLanguage(this.lang); content.Text += "\nℹ️ " + string.Format(strings.GetString(Strings.stringsList.limitedDoodleYouCanChooseSoMany), MaxVotes, pollVotes.Count); strings.SetLanguage(oldLang); return(content); }
public Doodle(int chatId, int pollId, string pollText, string pollDescription, EAnony anony, bool closed, PercentageBars.Bars percentageBar, bool appendable, bool sorted, bool archived, Dictionary <string, List <User> > pollVotes, List <MessageID> messageIds, List <User> people, DBHandler dBHandler, Strings.langs lang) : base(chatId, pollId, pollText, pollDescription, anony, closed, percentageBar, appendable, sorted, archived, dBHandler, pollVotes, messageIds, lang, EPolls.doodle) { this.people = people; }
public Doodle(int chatId, int pollId, string pollText, EAnony anony, DBHandler dBHandler, Strings.langs lang) : this(chatId, pollId, pollText, null, anony, false, PercentageBars.Bars.none, false, false, false, new Dictionary <string, List <User> >(), new List <MessageID>(), new List <User>(), dBHandler, lang) { }
protected override ContentParts GetContent(Strings strings, string apikey, bool channel = false, int?offset = null, bool moderatePane = true) { Strings.langs oldLang = strings.CurrentLang; strings.SetLanguage(lang); string text; InlineKeyboardMarkup inlineKeyboard = new InlineKeyboardMarkup(); inlineKeyboard.InlineKeyboard = new List <List <InlineKeyboardButton> >(); string description = ""; { int userCount = 0; int optionCount = 0; int percentageUserCount = 0; text = "\ud83d\udcca <b>" + HtmlSpecialChars.Encode(pollText).UnmarkupUsernames() + "</b>" + (!string.IsNullOrEmpty(pollDescription) ? ("\n" + HtmlSpecialChars.Encode(pollDescription) + "\n") : "\n"); Dictionary <string, List <User> > newVotes; if (this.Sorted) { newVotes = pollVotes.CloneDictionary(); newVotes = newVotes.Sort(); } else { newVotes = pollVotes; } if (this.PercentageBar != PercentageBars.Bars.none) { foreach (KeyValuePair <string, List <User> > x in pollVotes) { percentageUserCount += x.Value.Count; } } bool descTooLong = false; foreach (KeyValuePair <string, List <User> > x in newVotes) { int votingUserCount = x.Value.Count; text += String.Format("\n<b>{0}</b> [{1}]\n", HtmlSpecialChars.Encode(x.Key).UnmarkupUsernames(), votingUserCount); if (anony == EAnony.personal) { if (x.Value.Count > 0) { if (PercentageBar != PercentageBars.Bars.none) { text += PercentageBars.RenderPercentage((double)x.Value.Count / percentageUserCount, this.PercentageBar, true); } User last = x.Value.Last(); foreach (User user in x.Value) { text += "\u200E" + (user == last ? "└" : "├") + " " + HtmlSpecialChars.Encode((user.FirstName + (user.LastName != null ? " " + user.LastName : "")).Replace("\u200F", "").Replace("\u202B", "").Replace("\u202E", "").Truncate(25)) + "\n"; userCount++; } } else { if (PercentageBar != PercentageBars.Bars.none) { text += PercentageBars.RenderPercentage((double)x.Value.Count / percentageUserCount, this.PercentageBar); } } } else { if (PercentageBar != PercentageBars.Bars.none) { text += PercentageBars.RenderPercentage((double)x.Value.Count / percentageUserCount, this.PercentageBar); } userCount += x.Value.Count; } string unsortedKey = pollVotes.Keys.ElementAt(optionCount); if (!closed && !channel) { List <InlineKeyboardButton> thisRow = new List <InlineKeyboardButton>(1); thisRow.Add((InlineKeyboardButton)InlineKeyboardButton.Create(unsortedKey + " - " + pollVotes.Values.ElementAt(optionCount).Count, callbackData: Cryptography.Encrypt(chatId + ":" + pollId + ":" + optionCount, apikey))); inlineKeyboard.InlineKeyboard.Add(thisRow); } if (description.Length < 150) { description += unsortedKey.Truncate(15) + " | "; } else { descTooLong = true; } optionCount++; } if (descTooLong) { description += " | ..."; } description = "Personal vote - " + userCount + " participants\n" + description; if (!closed && channel) { inlineKeyboard.InlineKeyboard.Add(new List <InlineKeyboardButton> { InlineKeyboardButton.Create(strings.GetString(Strings.stringsList.buttonVote), url: "https://telegram.me/" + Globals.Botname + "bot?start=" + Cryptography.Encrypt("vote:" + ChatId + ":" + PollId, apikey)) }); } if (!closed && Appendable) { inlineKeyboard.InlineKeyboard.Add(new List <InlineKeyboardButton> { InlineKeyboardButton.Create(strings.GetString(Strings.stringsList.buttonAppend), url: "https://telegram.me/" + Globals.Botname + "bot?start=" + Cryptography.Encrypt("append:" + ChatId + ":" + PollId, apikey)) }); } if (delete) { inlineKeyboard = null; } description = description.Substring(0, description.Length - 3); text += "\n" + string.Format(strings.GetString(userCount == 0 ? Strings.stringsList.rendererZeroVotedSoFar : (userCount == 1 ? Strings.stringsList.rendererSingleVotedSoFar : Strings.stringsList.rendererMultiVotedSoFar)), userCount); if (closed) { text += "\n" + strings.GetString(Strings.stringsList.pollClosed); } } strings.SetLanguage(oldLang); return(new ContentParts(text, inlineKeyboard, description)); }
public PVote(int chatId, int pollId, string pollText, EAnony anony, DBHandler dBHandler, Strings.langs lang) : base(chatId, pollId, pollText, null, anony, false, PercentageBars.Bars.none, false, false, false, dBHandler, new Dictionary <string, List <User> >(), new List <MessageID>(), lang, EPolls.vote) { }
public Pointer(int chatId, EPolls pollType, ENeedle needle, EAnony anony, int? boardChatId, int? boardPollId, int lastPollId, Strings.langs lang) { this.ChatId = chatId; this.PollType = pollType; this.Needle = needle; this.Anony = anony; this.BoardChatId = boardChatId; this.BoardPollId = boardPollId; this.LastPollId = lastPollId; this.Lang = lang; }
protected Poll(int chatId, int pollId, string pollText, string pollDescription, EAnony anony, bool closed, PercentageBars.Bars percentageBar, bool appendable, bool sorted, bool archived, DBHandler dBHandler, Dictionary <string, List <User> > pollVotes, List <MessageID> messageIds, Strings.langs lang, EPolls pollType = EPolls.vote) { this.chatId = chatId; this.pollId = pollId; this.pollText = pollText; this.pollDescription = pollDescription; this.anony = anony; this.pollVotes = pollVotes; this.messageIds = messageIds; this.closed = closed; this.archived = archived; this.dBHandler = dBHandler; this.pollType = pollType; this.lang = lang; this.PercentageBar = percentageBar; this.Appendable = appendable; this.Sorted = sorted; }
protected override ContentParts GetContent(Strings strings, string apikey, bool channel = false, int?offset = null, bool moderatePane = true) { Strings.langs oldLang = strings.CurrentLang; strings.SetLanguage(lang); string text; string description; InlineKeyboardMarkup inlineKeyboard = new InlineKeyboardMarkup(); inlineKeyboard.InlineKeyboard = new List <List <InlineKeyboardButton> >(); if (offset == null) { if (!closed) { inlineKeyboard.InlineKeyboard.Add(new List <InlineKeyboardButton>() { InlineKeyboardButton.Create(strings.GetString(Strings.stringsList.buttonVote), url: "https://telegram.me/" + Globals.Botname + "bot?start=" + Cryptography.Encrypt("board:" + ChatId.ToString() + ":" + PollId.ToString(), apikey)) }); } //inlineKeyboard.InlineKeyboard.Add(new List<InlineKeyboardButton>() { InlineKeyboardButton.Create(strings.GetString(Strings.stringsList.buttonVote), url: "https://telegram.me/" + Globals.Botname + "bot?start=" + "board:" + ChatId + ":" + PollId) }); description = StringEdit.CurrentCulture.TextInfo.ToTitleCase(anony.ToString()) + " " + pollType + ": " + pollText + ": "; text = "\ud83d\udcdd <b>" + HtmlSpecialChars.Encode(pollText).UnmarkupUsernames() + "</b>" + (!string.IsNullOrEmpty(pollDescription) ? ("\n" + HtmlSpecialChars.Encode(pollDescription) + "\n") : "\n"); foreach (KeyValuePair <int, BoardVote> x in pollVotes) { string toAdd = (anony == EAnony.personal ? "\n\u200E<b>" + HtmlSpecialChars.Encode(x.Value.Name.Replace("\u200F", "").Replace("\u202B", "").Replace("\u202E", "").Truncate(25)) + ": </b>" : "\n\ud83d\udc64 ") + HtmlSpecialChars.Encode(x.Value.Text) + "\n"; if (text.Length + toAdd.Length <= 4000) { text += toAdd; description += x.Value.Text + ", "; } else { text += "\n▶️ <a href=\"https://telegram.me/" + Globals.Botname + "bot?start=" + Cryptography.Encrypt("pag:" + chatId + ":" + pollId + ":0", apikey) + "\">" + strings.GetString(Strings.stringsList.boardShowMore) + "</a>\n"; break; } } if (delete || closed) { inlineKeyboard = null; } description = description.Substring(0, description.Length - 2); text += "\n" + string.Format(strings.GetString(pollVotes.Count == 0 ? Strings.stringsList.rendererZeroVotedSoFar : (pollVotes.Count == 1 ? Strings.stringsList.rendererSingleVotedSoFar : Strings.stringsList.rendererMultiVotedSoFar)), pollVotes.Count); if (closed) { text += "\n" + strings.GetString(Strings.stringsList.pollClosed); } } else { description = ""; if (offset < pollVotes.Count) { int difference = (int)offset - (pollVotes.Count - 1); text = ""; for (int i = (int)offset; i < offset + 5; i++) { try { var x = pollVotes.ElementAt(i); text += (anony == EAnony.personal ? "\u200E<b>" + HtmlSpecialChars.Encode(x.Value.Name.Replace("\u200F", "").Replace("\u202B", "").Replace("\u202E", "").Truncate(25)) + ": </b>" : "\ud83d\udc64 ") + HtmlSpecialChars.Encode(x.Value.Text) + "\n\n"; } catch (ArgumentOutOfRangeException) { break; } } inlineKeyboard.InlineKeyboard.Add(new List <InlineKeyboardButton> { InlineKeyboardButton.Create("<<", callbackData: "comm:pag:" + chatId + ":" + pollId + ":" + (offset - 5 >= 0 ? (offset - 5) : 0)), InlineKeyboardButton.Create(">>", callbackData: "comm:pag:" + chatId + ":" + pollId + ":" + (offset + 5 < pollVotes.Count ? (offset + 5) : pollVotes.Count - 1)) }); text += string.Format(strings.GetString(Strings.stringsList.boardPagBottomLine), (offset + 1), (pollVotes.Count - offset < 5 ? pollVotes.Count - (offset - 5) : (offset + 5)), pollVotes.Count); } else { text = strings.GetString(Strings.stringsList.boardPagCantFind); } } strings.SetLanguage(oldLang); return(new ContentParts(text, inlineKeyboard, description)); }
public Board(int chatId, int pollId, string pollText, string pollDescription, EAnony anony, bool closed, bool archived, DBHandler dBHandler, Dictionary <int, BoardVote> pollVotes, List <MessageID> messageIds, Strings.langs lang) : base(chatId, pollId, pollText, pollDescription, anony, closed, PercentageBars.Bars.none, false, false, archived, dBHandler, null, messageIds, lang, EPolls.board) { this.pollVotes = pollVotes; }
public Board(int chatId, int pollId, string pollText, EAnony anony, DBHandler dBHandler, Strings.langs lang) : this(chatId, pollId, pollText, null, anony, false, false, dBHandler, new Dictionary <int, BoardVote>(), new List <MessageID>(), lang) { }
public LimitedDoodle(int chatId, int pollId, string pollText, EAnony anony, DBHandler dBHandler, Strings.langs lang) : base(chatId, pollId, pollText, anony, dBHandler, lang) { this.pollType = EPolls.limitedDoodle; }