Voici une solution.
\documentclass{article
\usepackage{xcolor}
\newcounter{xcolor}
\renewcommand{\thexcolor}{%
\ifcase\value{xcolor}%
black\or %0
green\or %1
blue\or %2
yellow\or %3
purple\or %4
red\fi} %5
\newcommand{\mtvert}{\setcolorvalue{1}}
\newcommand{\mtblue}{\setcolorvalue{2}}
\newcommand{\mtyellow}{\setcolorvalue{3}}
\newcommand{\mtpurple}{\setcolorvalue{4}}
\newcommand{\mtred}{\setcolorvalue{5}}
\newcommand\setcolorvalue[2]{%
\ifnum\value{xcolor}<#1\relax
\setcounter{xcolor}{#1}\fi
{\color{\thexcolor}#2}%
\setcounter{xcolor}{0}}
\begin{document}
Bonjour le monde
\mtvert{Bonjour le monde}
\mtvert{\mtred{Bonjour le monde} Hello World!}
Bonjour le monde
\mtred{\mtvert{Bonjour le monde}}
\mtblue{\mtvert{Bonjour le monde}}
\mtvert{\mtblue{Bonjour le monde}}
\mtblue{\mtyellow{\mtvert{Bonjour le monde}} Hello World!}
\mtred{\mtblue{Bonjour le monde}}
\end{document}