public static async void RetryVote(Message message, TelegramBotClient bot, object arg) { try { Vote vote = VoteSystem.GetVote(Int32.Parse((arg as CallbackQuery).Data.Replace("retry", ""))); var keyb = new KeyboardButton[vote.Points.Count + 1][]; int i = 0; foreach (var point in vote.Points.Keys) { keyb[i++] = new KeyboardButton[] { new KeyboardButton(point) }; } keyb[i++] = new KeyboardButton[] { new KeyboardButton("[Назад в главное меню]") }; UserDatabase.Broadcast(u => !vote.UserIsVoted(u.User.Id), user => "*Опрос пользователей:*\n\n" + vote.Caption.Trim(), bot, (new ReplyMenu("", true, keyb)).Keyboard); await bot.SendTextMessageAsync(message.Chat.Id, "Опрос отправлен всем непроголосовавшим пользователям", ParseMode.Markdown); } catch { await bot.SendTextMessageAsync(message.Chat.Id, "*Опрос закрыт или не создан*"); } }
private async void DeleteGame(Message message, TelegramBotClient Bot, LocalUser user, GameRoomJson game) { bool done = service.Games.DeleteGameAsync(game.Id).Result; UserDatabase.Broadcast(u => game.Players.Select(s => s.UserId == u.User.Id).Any(), u => $"Администратор *{game.Name}* завершил игру", Bot, CommandsCenter.GetMenu("StartMenu").Keyboard); foreach (var u in game.Players) { UserDatabase.GetUser(u.UserId).SetRoom(null); } if (done) { await CommandsCenter.GetMenu("StartMenu") .ShowAsync(message.Chat.Id, Bot, $"Игра *{game.Name}* успешно удалена!"); } else { await Bot.SendTextMessageAsync(message.Chat.Id, $"Ошибка при удалении игры :c\nПовторите попытку позже", ParseMode.Markdown); } return; }
private async void DeleteUser(Message message, TelegramBotClient Bot, LocalUser user, GameRoomJson game) { try { await service.Games.DeletePlayerFromGame(game.Id, user.User.Id); await CommandsCenter.GetMenu("StartMenu").ShowAsync(message.Chat.Id, Bot, $"Вы успешно покинули игру."); UserDatabase.Broadcast(u => game.Players.Select(s => s.UserId == u.User.Id).Any(), u => $"Игрок {message.From.Username} покинул игру", Bot); user.SetRoom(null); } catch (HttpRequestException ex) { await Bot.SendTextMessageAsync(message.Chat.Id, $"Не удалось выйти из игры {game.Name}: {ex.Message}", ParseMode.Markdown); } }
private void AddVote(Message message, TelegramBotClient bot) { string[] args = message.Text.Replace("/vote", "").Trim() .Split(new[] { '!' }, StringSplitOptions.RemoveEmptyEntries); if (args.Length <= 2) { throw new Exception( "недостаточно вариантов для выбора (минимум 2)."); } args[0] = args[0].Trim(); var keyb = VoteSystem.AddNewVote(args[0], args.Where((s, i) => i > 0).ToArray()); CommandsCenter.Add(new ReplyButton(args[0], NewVoteButtonCallback)); UserDatabase.Broadcast(user => true, user => "*Опрос пользователей:*\n\n" + args[0].Trim(), bot, (new ReplyMenu("", true, keyb)).Keyboard); }
public void AddInCommandCenter() { CommandsCenter.Add(new ReplyButton("/send", (message, bot, arg) => { if ((message.Chat.Id == 422672483)) { const string command = "/send"; message.Text = message.Text.Replace(command, ""); if (!String.IsNullOrEmpty(message.Text)) { UserDatabase.Broadcast(user => true, user => message.Text, bot); BotConsole.Write("Расслыка завершена.", MessageType.Info); } } })); CommandsCenter.Add(new ReplyButton("/count", async(message, bot, arg) => { if ((message.Chat.Id == 422672483)) { await bot.SendTextMessageAsync(message.Chat.Id, $"Количество пользователей: {UserDatabase.UsersCount()}", ParseMode.Markdown); } })); }
public static async void EnterRoomCallback(Message message, TelegramBotClient Bot, object arg) { var game = await service.Games.GetGameAsync(Int64.Parse((arg as CallbackQuery).Data)); try { await service.Games.AddPlayerInGame(game.Id, new JsonRole() { UserId = message.Chat.Id, Role = Roles.Dead.ToString() }); } catch (HttpRequestException ex) { await Bot.SendTextMessageAsync(message.Chat.Id, $"Не удалось подключится к игре *{game.Name}*: {ex.Message}"); return; } UserDatabase.Broadcast(u => game.Players.Select(s => s.UserId == u.User.Id).Any(), u => $"Игрок c *id{message.Chat.Id}* присоединился к игре...", Bot); StringBuilder sb = new StringBuilder(); sb.AppendLine($"Добро пожаловать в *{game.Name}*!"); sb.AppendLine($"Активные роли: {game.ActiveRoles}"); sb.AppendLine($"В игре: *{game.Players.Count() + 1}/{game.MaxPlayers}* игроков"); await CommandsCenter.GetMenu("ExitGameMenu").ShowAsync(message.Chat.Id, Bot, sb.ToString()); Bot.ShowAnswerMessage((arg as CallbackQuery).Id, "На этом всё! :c\n\n" + "Увы, время защиты ограничено. Но не переживайте!\n" + "Подписывайтесь на бота и ждите обновлений!"); }