# 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)
#  - will not repeat a def within 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"
#
#  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"
#
#
#
## 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 and 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`
#
##################################################################################
