You would need a script to do this.
Here's a simple example:
on ^*:text:*:#:{
haltdef
color $chan $nick $1-
}
alias -l color {
var %color = $left($nick($1,$2).pnick,1)
%color = $replace(%color,~,4,&,3,@,2,+,1)
if %color !isnum { %color = $color(normal) }
echo %color $2 $3-
}
I set this up so that you should be able to easily see how it works, and be able to work with notices and actions, as well as text.
Note: It is channel only.
I used the top 5 usermodes and the first 5 colors, since you didn't specify what colors you wanted to use.
Code edited for characters and colors specified by the OP. Also included default coloring for anyone that doesn't have one of the specified usermodes.