All about
Schweller's  'Modal Active Bot' 
- Ken Schweller


The 'Modal Active Bot' (#194 on BVU MOO) is a 'chat bot' designed to interact in vigorous
'Eliza-like' conversation with other folks in its vicinity. It has key words, sentence
patterns, random responses, and question responses - all user programmable.
It has some ability to recognize where it is and to whom it is talking.
Type @exam botname to see all the available commands. For detailed assistance
in programming this bot type 'help botname'. For a discussion of the issues
involved in testing machine intelligence see Turing's paper 'Computing
Machinery and Intelligence'. To start up the bot, drop it, activate it,
and say 'hi'. Please report bugs to schweller@bvu.edu

********************** PROGRAMMING COMMANDS *************************

1. ADDING A WORD FOR YOUR BOT TO RESPOND TO:
To see what words your bot already responds to type 'seewords botname'.
To teach your bot to respond to 'donut' with either 'I like donuts too.' or
'Donuts are very tasty!' just type 'addword botname' and enter the keyword
'donut'. Then enter the appropriate responses a line at a time. End with
a single period on a line by itself.

2. ADDING A PATTERN FOR YOUR BOT TO RESPOND TO:
Suppose you wished your bot to hear something like
MY DONUT ISN'T VERY TASTY
and respond with
WHAT'S SO GREAT ABOUT A TASTY DONUT?
To do this you must teach your bot to respond to the pattern
MY a ISN'T VERY b.
To understand what patterns look like, type 'seepat botname' and study the
examples. For additional assistance on understanding the syntax of patterns
type 'help regular'. When you think you are ready to add a pattern type
'@addpat botname' and enter the following line when asked to do so:
my %(%w*%) isn't very %(.*%)
Then type in the response form:
What's so great about a %2 %1?
Add as many response forms as you wish on separate lines. End with a
period on a single line.

3. ADDING RANDOM RESPONSES:
These responses are triggered whenever your bot can't find a keyword, a
pattern, or a question. To see the responses already programmed type:
'seeresponses botname'. To add a new random response type: 'addrandom
botname' and enter a new response.

4. ADDING A RANDOM RESPONSE TO A QUESTION
When your bot senses a question is being asked it responds with a random
'answer'. To see the random question responses already programmed into
your bot type 'seequestionresponses botname'. To add a new response
type 'addquestionresponse botname'.

5. To remove words, patterns, random responses or answers use the appropriate
'rm-' command. For example, to remove pattern number 5 on your bot just
type 'rmpat 5 from bot'.

6. Your bot responds to patterns in the order in which it matches them. If you
wish to move pattern number 7 to a position nearer the beginning of the
list you might type something like 'mvpat 7 on botname'. You will then
be asked to enter a line number to move pattern to.

7. ADDING ACTIONS TO YOUR BOT
Your bot can respond with Actions as well
as verbal responses. Just add a full colon as the first character
of any response that you wish to be 'emoted' rather than said.
For example, if you wish the bot to smile back when someone smiles,
just add the word 'smiles' and enter the response as:
:smiles back
Look at your bot's default keywords, patterns and random responses for other examples.

8. SETTING THE BOT'S RESPONSE MODE
The bot can be set to
- respond to given keywords
- respond to defined patterns
- answer questions (anything ending with a ?)
- give random responses when no keywords, patterns or questions are found
- give context-aware random responses such as "X is a nice name for this place.."
You can determine how the bot should respond by setting its mode using the table
below and commands such as: 'setmode botname to 3'

Mode 0 --- bot remains 'on' but responds to nothing ---
Mode 1 keywords
Mode 2 keywords + patterns
Mode 3 keywords + patterns + questions
Mode 4 keywords + patterns + questions + randomresponses
Mode 5 keywords + patterns + questions + randomresponses + context

By default the bot is in Mode 5 and responds to everything.

9. CAUTION: This bot was designed for serious educational and experimental
purposes. It makes an excellent 'guide' or 'tutor' and is an interesting
vehicle for the study of the limits of language understanding using an
'Eliza' approach. BUT.. it has great spam potential since it responds to
nearly everything it hears. 'Hush botname' when not needed and please be
considerate of others around you ..

PLEASE FORWARD COMMENTS AND BUGS TO KEN SCHWELLER
schweller@bvu.edu http://web.bvu.edu/faculty/schweller