private async void BotOnCallbackQueryReceived(object sender, CallbackQueryEventArgs callbackQueryEventArgs) { var callbackQuery = callbackQueryEventArgs.CallbackQuery; // Обработка голосования TelegramPoll poll = polls.FirstOrDefault(p => p.ChatId == callbackQuery.Message.Chat.Id && p.MessageId == callbackQuery.Message.MessageId); if (poll != null) { bool isVoted = poll.RegisterAnswer(callbackQuery.Data, callbackQuery.From); await bot.AnswerCallbackQueryAsync( callbackQuery.Id, isVoted?$"Голос за {callbackQuery.Data}!" : "Ваш голос уже учтён!"); return; } try { await bot.AnswerCallbackQueryAsync( callbackQuery.Id, $"Received {callbackQuery.Data}"); } catch (Exception ex) { } }
public virtual void GetPoolResult(object sender, Message message) { if (polls.Count == 0) { bot.SendTextMessageAsync( message.Chat.Id, "Нет доступных голосований.", replyMarkup: new ReplyKeyboardRemove()); return; } // Пользователь не указал голосование if (message.Text.Split(' ').Length < 2) { ReplyKeyboardMarkup requestReplyKeyboard = new ReplyKeyboardMarkup(polls.Select(p => new KeyboardButton($"/pollresult {p.Question}")), true, true); bot.SendTextMessageAsync( message.Chat.Id, "Результат какого голосования показать?", replyMarkup: requestReplyKeyboard); } else { // Проверка голосований TelegramPoll poll = polls.FirstOrDefault(p => p.Question == message.Text); poll?.ShowPollResult(message); } }
public virtual void StopPool(object sender, Message message) { if (polls.Count == 0) { bot.SendTextMessageAsync( message.Chat.Id, "Нет доступных голосований.", replyMarkup: new ReplyKeyboardRemove()); return; } // Пользователь не указал голосование if (message.Text.Split(' ').Length < 2) { ReplyKeyboardMarkup requestReplyKeyboard = new ReplyKeyboardMarkup(polls.Select(p => new KeyboardButton($"/endpoll {p.Question}")), true, true); bot.SendTextMessageAsync( message.Chat.Id, "Какое голосование остановить?", replyMarkup: requestReplyKeyboard); } else { // Проверка голосований TelegramPoll poll = polls.FirstOrDefault(p => p.Question == message.Text); if (poll == null) { return; } if (poll.Creator != message.From) { bot.SendTextMessageAsync( message.Chat.Id, "Голосование может остановить только создатель.", replyMarkup: new ReplyKeyboardRemove()); return; } poll.EndPoll(); } }
public virtual void CreatePool(object sender, Message message) { string[] data = message.Text.Split(':'); string question = data[0].Trim(); string[] answers = data[1].Split(';'); if (string.IsNullOrEmpty(question) || answers.Length < 2) { bot.SendTextMessageAsync( message.Chat.Id, "Неправильный формат команды."); return; } TelegramPoll poll = new TelegramPoll(bot, message.Chat.Id); poll.Send(message.From, question, answers); polls.Add(poll); // Удаление голосования по завершению poll.End += () => { polls.Remove(poll); }; }