say

say Type text in a window
Usage
say [-x] [-q] [-r=<window_id>] <text:string>
Description

This command is more or less equivalent to typing text in the input bar of the current window. If the -r switch is used then the command is rebound to the window specified by <window_id>. The main difference is that the variables and identifiers in <text> are always parsed (when typing this happen only if the text is a command).
The switch -x will make say evaluate and execute arbitrary commands, too: if <text> begins with a slash then it will be treated as a command to be evaluated and executed (after parsing the identifiers etc.).
If this happens, the executed command will not be send to the active channel.

/say -x /echo foo

will just print "foo".
Please note that using /say -x with a <text> that isn't a constant in the script but comes from some unidentified external source (e.g. the network) is a potential security flaw as it enables anyone to execute arbitrary commands: don't ever do it.
When the -x switch is not used, the text is never interpreted as a command. -q causes the command to run quietly.
Please note that /say will also trigger the ontextinput event. Handle with care.

Switches

-q | --quiet
Run quietly
-r=<window_id> | --rebind=<window_id>
Standard command rebinding switch
-x | --allow-exec
Allow the execution of commands by interpreting the leading slash in the <text>

Index, Commands