public bool TryDoCommand(Players.Player causedBy, string chattext, List <string> splits)
        {
            if (!splits[0].Equals("/lastseen"))
            {
                return(false);
            }
            var m = Regex.Match(chattext, @"/lastseen (?<playername>['].+[']|[^ ]+)");

            if (!m.Success)
            {
                Chat.Send(causedBy, "Command didn't match, use /lastseen [playername]");
                return(true);
            }
            var targetPlayerName = m.Groups ["playername"].Value;

            Players.Player targetPlayer;
            string         error;

            if (!PlayerHelper.TryGetPlayer(targetPlayerName, out targetPlayer, out error, true))
            {
                Chat.Send(causedBy, $"Could not find player '{targetPlayerName}'; {error}");
                return(true);
            }
            var lastSeen = ActivityTracker.GetLastSeen(targetPlayer.ID.ToStringReadable());

            Chat.Send(causedBy, $"Player {targetPlayer.ID.ToStringReadable()} last seen {lastSeen}");
            return(true);
        }
        public bool TryDoCommand(Players.Player causedBy, string chattext, List <string> splits)
        {
            if (!splits[0].Equals("/list"))
            {
                return(false);
            }
            Match m = Regex.Match(chattext, @"/list (?<playername>['].+[']|[^ ]+)");

            if (!m.Success)
            {
                Chat.Send(causedBy, "Syntax: /list {playername}");
                return(true);
            }
            if (!PermissionsManager.CheckAndWarnPermission(causedBy, AntiGrief.MOD_PREFIX + "listplayer"))
            {
                return(true);
            }

            string targetName = m.Groups["playername"].Value;
            string error;

            Players.Player targetPlayer;
            if (!PlayerHelper.TryGetPlayer(targetName, out targetPlayer, out error, true))
            {
                Chat.Send(causedBy, $"Could not find '{targetName}'; {error}");
                return(true);
            }

            string lastSeen = ActivityTracker.GetLastSeen(targetPlayer.ID.ToStringReadable());
            string colonies = "";
            int    count    = 0;

            for (int i = 0; i < targetPlayer.Colonies.Length; i++)
            {
                if (!colonies.Equals(""))
                {
                    colonies += ", ";
                }
                colonies += targetPlayer.Colonies[i].Name;
                count++;
            }

            Chat.Send(causedBy, $"Player {targetPlayer.Name} last seen {lastSeen}");
            Chat.Send(causedBy, $"{targetPlayer.Name} owns {count} colonies: {colonies}");
            return(true);
        }