It should be pointed out that chat_private() will only work if you're sending a message to someone in your clan or your contact list. mafia does not allow you to send private message to just anyone.
You are, strictly speaking, correct (although it's been a while since my code did that). I personally don't agree with that limitation - I think it makes it less useful than chat_reply() was. However, it does have its uses and the limitation isn't hard to override.
Actually, that reminds me. I think last time I was trial running a chatbot script we had an issue with the function failing if you didn't have access to the clan whitelist too.
/me goes to have a poke
EDIT: Yep. Confirmed. It requests the clan whitelist page, but in the instance it can't access that, aborts with the "contact Jick" message.