the more powerful, but lower level, @code{bot:send-MESSAGE}
functions. Most bots will probably only need the higher level
functions, but for the sake of why-not Bobot++ lets you use the lower
-level functions.
+level functions (in progress).
@menu
* High Level Message Functions::
argumentless procedure (a thunk). When the bot exits your thunk will
be called.
-@c Since a bot calls hooks on things it says, you have to be careful
-@c about hooks that output text that might match itself. E.g. if you have
-@c a hook that matches @code{"foo"} and the hook displays @code{"foo to
-@c the whatsit?"}, then the hook will call itself over and over until the
-@c stack overflows! To protect against this I wrote the macro
-@c @code{not-from-me}. You call it like this: @code{(not-from-me from
-@c (stmts if not from bot) (stmts if from bot))}. E.g.
-
-@c @example
-@c (bot:addhook hooks/public "foo"
-@c (lambda (f t p)
-@c (not-from-me f ((bot:say t "foo to the what!")))))
-@c @end example
-
-@c This say ``foo to the what!'' to the channel that ``foo'' was said in
-@c and do nothing otherwise. You can optionally specify an action to be
-@c executed if the message is from the bot:
-
-@c @example
-@c (bot:addhook hooks/public "foo"
-@c (lambda (f t p)
-@c (not-from-me f ((bot:say t "foo to the what!"))
-@c ((bot:say t "moof")))))
-@c @end example
-
-@c That will do the same thing as the first example, but the bot will
-@c say ``moof'' if it said ``foo'' before. That probably isn't a very
-@c nice thing to do, but it works as an example. You can have as many
-@c staments as you want in the clauses.
-
@node Concept Index, Function Index, Scripting, Top
@unnumbered Concept Index
@printindex cp