## NotePod.tcl (c) 1998 by Amadeus - The Elite Scripting Team efNET #scripting set NP_version "\002NotePod\002 3.02 by \002Amadeus\002" ############################################################################## ## ## Credits ## Basic design by Einride, - The Elite Scripting Team ## Based on ideas picked from fluxlearn.tcl by Reflux and WDOG.MRC by Genesis ## # # NotePod is a channel definition script, similar in many respects to # explain and fluxlearn and others. It has many additional features however, # including but not limited to: # - configurable channel triggers # - command specific access flags # - fallback to users channel status when user is not on bot # - only user who set a definition can replace it (except for master) # - only configured script_owners (defined in script config) can forget # or replace defs LOCKED by any script_owner listed # lock is set by preceeding def with ":" # this supports multiple handles in $owner # - will not repeat a def within configurable number of mins. # - configurable usage limit (default is 5 defs in 3 mins) prevents # over-eager users from lagging the bot. # - puts non-users who try to use NotePod commands and those who exceed # usage limit on ignore for configurable number of mins. # - special commands for masters # - command to replace a definition # - backup bot automatically takes over when primary leaves channel # - botnet commands to sync definitions for two bots # - configure once for both bots # - dcc commands to get various internal files # - dcc commands to show, learn, forget and replace definitions # - dcc and channel commands to do wildcard matches of nick and body of # definitions # - automatically sorts defs # # ## Channel commands: # command trigger # # help <configuable> - user level specific help # trigger example "?? ??" # # explain <configurable> - show a definition # trigger example "?? someword" # # scan <configurable> - show definition matchs for a wildcard # - will match to word* in def name or body # trigger example "??? someword" # # scannick <configurable> - show definition matches set by nick # trigger example "?!? somenick" # # scanbody <configurable> - show wildcard match in body of definitions # will match to *word* in body of def # trigger example "??! someword" # # learn <trigger>learn - learn a new definition # - learn will strip tcl {}[] characters from # - definitions. # - mIRC attributes and color codes may be used # - in body of def. # trigger example "?!learn someword and its definition" # # - if def is set by a user listed in $script_owners and is # preceeded with a ":", this definiton may only be changed # by one of the $script_owners # (applies to forget and replace as well) # # forget <trigger>forget - forget a definition # trigger example "!forget someword" # # replace <trigger>replace - replace a definition # trigger example "!replace someword with a new def" # # Only the user who set a definition may replace or forget it. # The NP_Remove_any and NP_Replace_any variables define the level of # a user who can forget or replace ANY definiton. This is usually set # to M (master). # # whoset <trigger>whoset - show who set a definition # trigger example "!whoset someword" # # As a configured NotePOD OWNER, (configuration option script_owners) # you can LOCK a definition by prepending : (colon) when using the learn # or replace commands. # The following commands allow you to lock/unlock a pre-existing definition. # puthelp "PRIVMSG $nick :\00313$NP_trigger_Lockdef <def>\003 - # lock a current definition." # lockdef <word> # unlockdef <word> # ## DCC +m commands: # # # .np learn , forget, replace, whoset same as for channel commands # # .np show - dcc equivalent of explain, # - this is raw mode showing whoset also # .np wshow - dcc equivalent of scan # .np bshow - dcc equivalent of scanbody # .np nshow - dcc equivalent of scannick # # .np getlist - send definition list # .np gethist - send definition change history # .np getsync - send definition sync file # # .np forcesync - force def list sync on target bot # .np killsync - delete pending def resync list # # .np update - update def list on target bot # - bot DCC sends list to target bot # # .np move <sync|list> - install new synclist or deflist # - that was DCCed to bot by owner # .np sort - sort the def list # # ## Definition Sorting: # # Definition list is sorted on restart, rehash and via dcc command. # A backup file is made. # # ## Definition Syncing: # # When operated on two bots, NotePOD tries to keep the definition files in # sync on both. It accompishes this via the botnet link, issuing putbot # commands as required. # # Both bots execute learn, replace & forget, but only the primary NotePod bot # will reply to channel explain and scan commands. # When the primary goes offline/channel, the secondary takes over # public/msged replies. Both bots store all changes made in a sync file # while the other is offline. # If bots are linked but on split channels, def sync is done via botnet. # When a bot relinks, the other will update it via the botnet. # If synclist is greater that 1k, sync is not done and a note will be sent # to the bot OWNER. IN this case, the owner must use the .np update command # to update the other bot. # If synclist is 51 bytes, this indicates bot has a default list and it # will automatically request, via the botnet, the current def list from the # other bot. A note will be sent to OWNER. # # Both bots MUST have x flag for each other, and you should have an inbound # directory defined and created on each. They need to be botlinked also :) # # IF both go offline/channel, yer screwed, don't bug me. # Amadeus` # ############################################################################# #