2009-03-17 18:50:02 UTC
%{P0} contains just the matched part of the triggering line, not the whole line. But %{*} always contains the whole line, no matter what pattern you used for the trigger, so just use %{*} in your body:
/def -mglob -t'*tells you*' = /quote !speak %{*}
However, there is a security hole in this definition. If the line contains quotes or other shell metacharacters, the speaker can execute arbitrary shell commands.
To avoid this, use an environment variable to pass arguments to your shell command:
/def -mglob -t'*tells you*' speak = \
/setenv ARGS=%{*}%; \
/quote -S !speak "$${ARGS}"