I don't want to make this code complicated and use .ini files for settings. The least I can do is add a lang file and put all the messages there.
That ColorChat is not even mine, I have been using it since forever and approvers don't have a problem with it. But now that you mention it, you're right, maybe it should be fixed, but I really don't want to experiment with it, since I haven't had any problems with it. It starts from 0 with a reason, take a look at the beginning of the function. However, you're wrong about the SayText part. The code is used every time when ColorChat is called, aka every time a message is sent, so it will search the msgid every time it is used. Caching it in plugin_init will is totally correct.