You would just go back into your original function and tell it to change the colors. I'll provide a small example of a admin only chat I wrote a little over a year ago and you can see how I made it work.
if not calling_ply:IsValid() then
ULib.tsayColor( v, 1, "(Admin Chat)", console, "(Console)", admin, ": ", message )
else
ULib.tsayColor( v, 1, "(Admin Chat) ", team.GetColor(calling_ply:Team()), calling_ply:Nick(), admin, ": ", message )
end
Basically I made utilization of the ULib.tsayColor() function to give my chat some pretty colors. Now in my example I used some predefined terms like 'admin' and 'console' and all of that to avoid clutter. Those were something like
local console = Color(0, 0, 0)
local admin = Color(0, 255, 242)
Now the above is just a small snippet to show you how I handled colors, not the entire command. I do remember I made a post when making those a while ago so if you do some digging you can probably find close to what they turned out to be if you want the full thing but what I provided above is how I handled colors.
If you're running a DarkRP server then team.GetColor(ply:Team()) will return what color their job is, TTT will return living/dead and Sandbox will return just whatever you have team colors set to be.