"Custom text field" like you'd type into say but you actually type in a command ?
You just create a console command, example "CustomReason" and when you send your ban command or whatever, send cmd to client: "messagemode CustomReason", that'll show the user "CustomReason: " in top left corner of screen and he can type something there.
Then you just get the input client typed in CustomReason's callback function, I recommend using read_args() instead of read_argv() if you have only one long string that could contain other double quotes... anyway, just use read_args()