private async Task AnnounceMessage(User u, TelegramBot.TelegramBot bot, string message)
 {
     GameRegistry.Game game;
     GameRegistry.IsInGame(u, out game);
     var msg = Message(-1, $"{u.Bold()} {message}", userMarkup: true);
     foreach(var user in game.Players)
     {
         msg.ChatId = user.ID;
         await msg.HandleReply(bot);
     }
 }
 private async Task<TelegramBotReply> onPlayerPicked(User u, TelegramBot.TelegramBot bot, Message m, GameRegistry.Game game)
 {
     const string viewMembership = "is picking someone to view his/her membership";
     var flowObj = new PickPlayerFlow(game, onPickedMembershipTarget);
     if (u == m.From)
     {
         await AnnounceMessage(u, bot, viewMembership);
         m.From.MessageFlow = new MessageFlow(u, new FlowObject { Handler = flowObj });
         return Message(m, "You cheating bastard! Pick the one you would like to view the membership off.", replyMarkup: flowObj.GetKeyboard());
     }
     else
     {
         await AnnounceMessage(u, bot, viewMembership);
         u.MessageFlow = new MessageFlow(u, new FlowObject { Handler = flowObj });
         await Message(u.ID, "You've been chosen to view somebody's membership. Please pick one.", replyMarkup: flowObj.GetKeyboard()).HandleReply(bot);
     }
     return Message(m, $"You have chosen {u.Bold()} to pick a player", replyMarkup: HostMessageHandler.HostKeyboard, userMarkup: true);
 }
 private async Task<TelegramBotReply> onPickedMembershipTarget(User u, TelegramBot.TelegramBot bot, Message m, GameRegistry.Game game)
 {
     await AnnounceMessage(m.From, bot, $"has chosen to view {u.Bold()}'s membership");
     return Message(m, $"The role of {u.Bold()} is {game.GetRole(u).Membership.Bold()}", replyMarkup: game.Host == m.From ? HostMessageHandler.HostKeyboard : JoinMessageHandler.JoinedPlayerKeyboard, userMarkup: true);
 }