Table of Contents
Guru Customization (GURU.DAT)
The Synchronet Guru is an artificial conversational engine users can chat with for entertainment. Each configured guru is backed by a small file in the ctrl directory whose name matches the guru's Internal Code (lowercased) with a .dat extension. The default guru's brain is ctrl/guru.dat.
A guru's “intelligence” is just a list of expression / response pairs evaluated top-down against the user's typed line. The first expression that evaluates true triggers a randomly-chosen response from its set. Sysops customize a guru by editing this file.
The interpreter does not handle syntax errors gracefully. Make a backup before editing, and test changes against your own login.
File structure
(expression) response response (expression) response response () response response response
- Expressions are enclosed in parentheses
(...). - Each expression is followed by one or more response lines.
- The final expression must be the empty fall-through expression
(). Omitting it is a syntax error. - Total file size is limited to 64 KB (or available memory).
Evaluation is top-down. As soon as one expression matches, its response set is used and remaining expressions are ignored for that input line. Only one response per input line is selected.
Expressions
The simplest expression is a literal uppercase string (with or without spaces). The user's input is uppercased before comparison.
- Strings cannot contain
~,^,|,&,(, or).
Match modifiers
| Modifier | Position | Meaning |
|---|---|---|
~ | suffix | Match even when the string is embedded in a larger word. (HELLO~) matches the user typing XhelloX. |
^ | suffix | Match only when the string is at the start of the input line. (HELLO^) matches Hello there but not I said, Hello!. |
Logic operators
| Operator | Meaning | Example |
|---|---|---|
& | AND | (HELLO&GURU) — both strings must appear in the input |
| | OR | (HELLO|HI) — either string |
( ) | Group | (GURU&(HELLO|HI)) — nested logic |
ARS expressions
An expression may include an ARS in square brackets [ ] for user-attribute matching. Example:
(HELLO&GURU&[LEVEL 20])
Evaluates true only if the user typed both HELLO and GURU and their security level is 20 or higher. See Access Requirements for the full ARS syntax.
Responses
Each expression can be followed by up to 100 responses, each up to 512 bytes. The Guru picks one at random from the matching expression's response set.
- Responses cannot contain
(or). - A response may span multiple lines if each continued line ends with a back-slash
\. - The more responses an expression has, the less the Guru repeats himself.
Response variables
A back-quote (`) character followed by one of the variables below substitutes a dynamic value (or performs an action) inline:
| Variable | Meaning |
|---|---|
`A | User's alias (or name, if aliases are not allowed) |
`B | User's birth date |
`C | User's computer / host description |
`D | User's download bytes |
`G | Guru's name |
`I | System's QWK ID |
`J | Current day of month |
`L | User's security level |
`M | Current month |
`N | User's note (location, if aliases not allowed) |
`O | Sysop's name |
`P | User's phone number |
`R | User's real name (address, if aliases not allowed) |
`S | System name |
`T | Current time |
`U | User's upload bytes |
`W | Current day of week |
`Y | Current year |
`Z | User's ZIP/postal code |
`$ | User's credits |
`# | User's age |
Action variables (local-only)
These have effect only when the user is in local chat with the Guru (not in multinode chat):
| Variable | Effect |
|---|---|
`H | Hang up on the user immediately |
`Q | Quit chat (the only way to exit Guru chat without Alt-G locally) |
`! | Toggle the Guru's typing-mistake mode on/off |
`_ | Pause briefly mid-response |
Example
(HELLO) Hello there, `a... Hi `a, what's new? Hey `a — how's the weather in `n?
If a user named Joey from Bigfork, MT types hello, the Guru randomly picks one of the three responses. `a is replaced with Joey and `n with Bigfork, MT.
For more elaborate examples, see the default ctrl/guru.dat that ships with Synchronet.
See Also
- ctrl — location of
guru.dat