IIRC, the say message is always enclosed in quotes ("). That means you can just read_argv(1) or read_args() to get the whole message, but you then need to remove_quotes() it and then parse() or strbreak() it into individual parts..
e.g. if someone types /transfer 555 120, what you would get is "/transfer 555 120" as arg1.
I might be wrong about that, but I do remember reading say commands was different from reading console commands.