Webster the Spellbot (Version 3.3, Perl) Hacked by Alan Schwartz (Javelin@BelgI, Paul@Dune) Socket and telnet code by David Noble (see files for email) (No warranty granted or implied :) What's new (3.3): Hooks for a +suggest command, which uses webster -s to report suggested spellings of a given (misspelled) word. Suggested by Sean Fike. What's new (3.2): Players with multi-word names are handled correctly. spellobj.msh works right now. What's new (3.1): Fixes a security problem in Webster 3. Webster is written in perl and is much faster, more responsive, smaller, and better behaved. If disconnected, Webster will try to log back into your MUSH every 30 minutes. Remember to kill the process if you don't want that. Webster is a MUSH robot which provides an interface to the Unix 'spell' and 'webster' commands (spell-checking, definition, and suggestion), as well as a way for players to dump messages into a file on the game account (used on DuneMUSH for the +rumor command, could also make a nice +gripe, etc.) File list: web The robot code itself sock.pl Socket support telnet.pl Telnet support addspell Useful utility for local dictionaries spellobj.msh A MUSH master room object to use as a safe interface to Webster. INSTALLATION I. From the account Edit web to set parameters. In particular, don't set Webster's password ($web_pass) to an English word. Most of the parameters are pretty self-explanatory. IF you don't have the webster program, comment out the line that starts with &define. The very first line of web and each .pl file should point to perl on your system. If you want to use British spellings, find the line in web's spell subroutine and add a -b to the spell command's command-line. Be sure to chmod +x all the perl files. II. From the MUSH Create a character named Webster, with the appropriate password from web.h Create a room for Webster, and put it there. Link it there. Set the home FLOATING, and don't make exits into it. Webster is operated solely by pages. Spellobj.msh is some uploadable mush code to be used on a master room global commands object (it includes a little help paragraph). If you want to use spellobj.msh, you should upload it (with a client or by hand) and then page-lock (@ulock) Webster to you and to the object that spellobj.msh is on. This prevents other players from somehow forcing Webster to disconnect, and sets up the +spell <obj>/<attr> and +spell <test> commands. Spellobj just handles the +spell command, not +define or +rumor, so you'll have to figure out how to do those yourself. It's easy. III. From the account again: Run webster: From csh, web >& web.log & From sh, web 2> web.log 1>&2 &, I think. USING WEBSTER IN THE MUSH Once Webster is connected, anything paged to Webster will be spellchecked, unless Webster's password is part of the page, in which case Webster will disconnect from the MUSH and the program will stop. Webster assumes that the player paging it is to get the answer, and that the first word of the page is the name of an attribute. This is useful with the +spell <obj>/* command, so that Webster can return more useful information about spelling errors. This is also why I recommend using +spell and page-locking webster, rather than allowing players to page directly - Webster is easily spoofed. (In fact, +spell works by spoofing Webster). THE ADDSPELL SCRIPT The addspell script is a convenient way to add words to your local dictionary, which, according to the spell man page, should be a sorted list of words, one per line (you don't have to add plurals, since spell does derivations). Syntax: addspell <word> Addspell will create the local dictionary (edit it to set the filename) if it doesn't exist, and will add the word if it's not already in the dictionary, and resort the dictionary. FUTURE RELEASES Maybe. In any case, don't mail me with ideas for changes and stuff, since this is just an aside for me. Thought I'd share it, is all. Hope you improve it. A really great thing to do would be a Maas-Neotek (or other exploring robot) which walks around the MUSH and automatically spellchecks rooms as it enters them. Maybe I'll do that. :) - Alan (alansz@cogsci.berkeley.edu) Paul@DuneMUSH Javelin@Belgariad Belkira@Belgariad II Indena@Mua'kaar Faust@Pandemonium