StormBot V7 ChangeLog: 2014-11-05 14:23:50 +0000

[Coder's message]
A bunch of updates, too numerous to list. This log may overlap some entries form the last one.

[]
 * 2014-09-07 06:39:21 +0000: #0213: Fixed CORE (fixed the name of the license file in the disclaimer. The file was renamed a few weeks ago)
 * 2014-09-07 05:45:26 +0000: #0210: Updated CORE (another credit to me re: Eggdrop fixes; see text)
 * 2014-09-07 00:15:50 +0000: #0204: Fixed CORE (cosmetic: explanation about $TCL_PRECISION / IEEE rounding errors)

[sb7_tail.tcl]
 * 2014-11-05 13:36:06 +0000: #0315: Fixed GET RANGE (I forgot to code for ">#" "<#" "<=#" ">=" which was exposed when working on CHANMON)
 * 2014-11-05 13:03:51 +0000: #0314: Added DATA RENAME (entire datum) & DATA ARRAY RENAME (individual elements)
 * 2014-11-05 12:43:44 +0000: #0313: Added SB7 ARRAY SET:ALL [synonym: "setall"] ( allows setting of multiple array elaments in one sequence; "" to empty / unset element)
 * 2014-11-05 11:49:22 +0000: #0310: Added DATA ARRAY GET:ALL (synonym: GETALL) [LIST elements] var1 var2 var3 ... varN (assign variables from specific data array elements, similar to how LASSIGN works)
 * 2014-11-04 16:11:39 +0000: #0307: Fixed multiple beads (completed fixen re: where access levels are stored: USERLEVEL:* vs ACCESS:* (winner: ACCESS:*))
 * 2014-11-04 16:10:06 +0000: #0306: Added SB7 LOG (generic logging of SB7-specific stuff. Currently goes to PUTCMDLOG)
 * 2014-11-04 15:50:38 +0000: #0305: Fixed ACCESS (two data streams were being created for tracking channel & global access: USERLEVEL:* and ACCESS:*. The intention was to change to ACCESS:* but it wasn't changed everywhere, breaking backwards-compatibility)
 * 2014-11-04 15:39:37 +0000: #0304: Fixed USERFLAG ADD (untriggered error: code did the same as USERFLAG SET: set the flags to ONLY the ones being requested (if the flags sent didn't have the "+" in front))
 * 2014-11-04 15:38:36 +0000: #0303: Fixed ACCESS FIX (wasn't assigning default values based on flags; a weird IF that checked "if STRING MATCH returns an integer, exit" ... which it ALWAYS DOES! I don't understand; I must have been tired when I wrote that)
 * 2014-11-04 15:28:49 +0000: #0302: Renamed MSET to SET:ALL (more obvious when debugging)
 * 2014-10-26 09:17:57 +0000: #0300: Fixed IMPLODE (the JOIN I added in SB6:EXPLODE was needed here, too)
 * 2014-10-14 05:21:00 +0000: #0298: Fixed LREMOVE (when the variable given doesn't exist, complain: copy the standard TCL 'no such variable' text)
 * 2014-10-12 08:44:19 +0000: #0296: Fixed DATA SAVE (added "writing data file" line to log jus tlike SAVE & SAVECHANNELS do)
 * 2014-10-12 07:09:30 +0000: #0292: Added CONFIG -GLOBAL BACKUP (controls if backups are done automatically after each / every save (via SAVEME); upgraded SAVEME accordingly)
 * 2014-10-08 14:29:48 +0000: #0286: Fixed IS BOT (removed botnet-linked check; moved it to last position (commented-out) in case I bring it back)
 * 2014-10-08 14:29:47 +0000: #0285: Fixed INLIST (sanity check: when blank values are passed)
 * 2014-10-08 14:29:46 +0000: #0284: Added ALPHABET (ported from SB6, changed fixed-position options to flags)
 * 2014-10-08 14:29:45 +0000: #0283: Fixed NOCOMMA (streamlined)
 * 2014-10-08 14:29:44 +0000: #0282: Fixed GET TIME (recent changes in code did not properly return the calculated time value, when checking CLOCK SCAN method, when the entire phrase was a valid value)
 * 2014-10-08 14:29:27 +0000: #0281: Fixed GET TIME -TIME (crecent changes in FLAGS required $FLAGS(-time) to be reviewed differently: NOTEMPTY vs boolean)
 * 2014-10-08 14:29:11 +0000: #0280: Upgraded LCANCEL (-REPLACE: if the list contains +1 and you run it against -1, they'll annihilate. If you use -REPLACE, then -1 will replace +1, just like you would think CHANSET -AUTOOP would work against +AUTOOP)
 * 2014-10-08 14:29:10 +0000: #0279: Fixed GET TIME -TIME (crecent changes in FLAGS required $FLAGS(-time) to be reviewed differently: NOTEMPTY vs boolean)
 * 2014-10-08 14:29:09 +0000: #0278: Upgraded LCANCEL (-ANNIHILATE: original LCANCEL behavior: +1 and -1 self-destruct, leaving nothing. Also, added -REPLACE: if the list contains +1 and you run it against -1, they'll annihilate. If you use -REPLACE, then -1 will replace +1, just like you would think CHANSET -AUTOOP would work against +AUTOOP. -REPLACE is now the default action)
 * 2014-10-08 14:29:08 +0000: #0277: Added LCANCEL (needed for CONFIG -GLOBAL CHON ... and maybe a few other things ...)
 * 2014-10-08 14:28:35 +0000: #0266: Added DATA FILENAME TAIL (with TAIL, it only returns the file's name without path; without TAIL, it returns the full path to the file)
 * 2014-10-08 14:28:33 +0000: #0265: Fixed FLAGS / FLAGS:SIMPLE (when defining the flags variable, unset it first. This was a problem when using SB7's flag / variable parser (SB7 PARSEFLAGS) and creatign the default variable $FLAGS, then, in a sub-option, using FLAGS -PARAMS with $FLAGS, which creates an array. The scalar -> array change caused variable reference errors)
 * 2014-10-08 14:28:32 +0000: #0264: Fixed FLAGS / FLAGS:SIMPLE (when defining the flags variable, unset it first. This was a problem when using SB7's flag / variable parser (SB7 PARSEFLAGS) and creating the default scalar(!) variable $FLAGS, then, in a sub-option, using FLAGS -PARAMS with $FLAGS, which creates an array. The scalar -> array change caused variable reference errors)
 * 2014-10-08 14:28:28 +0000: #0263: Fixed SB7:DISPATCH (when I patched the dispatcher for a proper-channel check, I didn't consider "universal" commands like REHASH or LOGIN, which don't require a channel; these came in as channel "*" as a proxy. This was confusing the proper-channel checker)
 * 2014-10-08 14:28:25 +0000: #0261: Fixed STACK:TRACK (it seems that level 0 is the "default" (current) level, because it always seems to be the same as the deepest level. Restricted loop to "level-to-one" instead of zero)
 * 2014-10-08 14:28:13 +0000: #0255: Fixed TIME GET (when no valid clock data was found, $TIME was left unset)
 * 2014-10-08 14:28:12 +0000: #0254: Fixed GET TIME (when no valid clock data was found, $TIME was left unset)
 * 2014-10-08 14:28:10 +0000: #0253: Fixed SB7:DISPATCH (targetting an illegal channel was being overridden with the last-successful-channel command target. This was originally done for output reasons but that messed-up the check for illegal command target channels (if we ignore -INVALID:OK))
 * 2014-10-08 14:28:09 +0000: #0252: Fixed SB7:DISPATCH (targetting an illegal channel was being overridden with the last-successful-channel command target. This was originally done for output reasons but that messed-up the check for illegal command target channels (if we ignore -INVALID:OK))
 * 2014-10-08 14:28:08 +0000: #0251: Fixed DATA SAVE (sort data member names)
 * 2014-10-08 14:28:06 +0000: #0250: Fixed NONE (cosmetic: easier to rad by separating lines)
 * 2014-10-08 14:28:05 +0000: #0249: Fixed NONE (cosmetic: easier to read by separating lines)
 * 2014-09-15 07:17:19 +0000: #0248: Added SEQUENCE:ASC (provide a similar command to SEQUENCE for alpha chars, similar to how STRING MATCH / REGEXP think of characters ranges like "0-9" or "a-z")
 * 2014-09-15 06:47:38 +0000: #0247: Fixed DATA LIST, DATA FIND, DATA ARRAY LIST, & DATA ARRAY FIND (forced the list of array elements to be sorted)
 * 2014-09-15 06:35:14 +0000: #0246: Added SB7:004, SB7:005, SB7:351 to bootstrap (the beginnings of handling IRCd message #005 which provides all server-specific information. Things like WALLCHOPS / STATUSMSG / PREFIX / CHANMODES are useful to determine which modes / wallops we can handle on a server-by-server basis)
 * 2014-09-15 05:27:10 +0000: #0245: Fixed GET RANGE (now processes "all" appropriately)
 * 2014-09-15 02:26:12 +0000: #0241: Added LDESTROY -COUNT
 * 2014-09-15 02:04:46 +0000: #0240: Fixed LDESTROY (yesterday's re-write did the OPPOSITE of what I wanted: identified matches instead of removing matches. L(ist)DESTROY, not L(ist)KEEP :p)
 * 2014-09-14 02:40:28 +0000: #0235: Fixed AJL (to reinforce the patch applied to CHANGELOG #234, added a specific line to the beginning of AJL: check for single dash, just return it if it exists. All other possibilities, I think, will be properly handled by the parsers)
 * 2014-09-14 02:37:28 +0000: #0234: FLAGS:SIMPLE / FLAGS -SIMPLE (parser was patched for bad (accidental) wildcard non-flag matches, however, single dash could still match a single-flag parse attempt, thanks to UNIQUEMATCH. Sanity check added. This fixed "AJL -" which piped through LDEFAULT which single-flag matched -COUNT, which was passed into LREPEAT...)
 * 2014-09-14 02:15:21 +0000: #0233: Fixed GET RANGE (the DEFAULT part of SWITCH was allowing non-digit values to be processed. This is a problem for two reasons, the less-innocuous one being: useless alpha text was being processed as "1-" (essentially))
 * 2014-09-14 02:12:48 +0000: #0231: Added LDESTROY -COMMON (required a complete re-write of the PROC to fit it in. This may destroy ... everything ... so, don't be surprised to see a reversion notice down the line)
 * 2014-09-12 21:11:41 +0000: #0230: Fixed LDESTROY (when using -MULTIPLE, -ALL is automatically implied. After all, why scan a multiple-element list without intending -ALL)
 * 2014-09-08 01:30:47 +0000: #0228: Fixed DATA SAVE (added ability to manually include text to append to the file name ("data save temp" -> "bot.data~temp"). Using "*" creates "bot.data~19700101-000000" (current date/time, of course))
 * 2014-09-08 01:29:17 +0000: #0227: Fixed SAVEME (cosmetic: typo in comments)
 * 2014-09-08 00:53:10 +0000: #0226: Fixed DATA SAVE (version inform saved in the header wasn't the updated format info)
 * 2014-09-08 00:32:21 +0000: #0224: Fixed SB7:LOADBEADS (show error message when a bead load fails)
 * 2014-09-07 07:26:34 +0000: #0218: STACK:TRACE (added a primitive stack trace, just to hunt things down while debugging)
 * 2014-09-07 05:49:45 +0000: #0211: Fixed MASKFORMAT (when a null value was passed, it was being turned into *!*@*! for some reason)
 * 2014-09-07 05:41:14 +0000: #0209: Fixed FORMAT:PERCENT (better parser, though it exploded from 1 to 4 lines. Was necessary to handle a weird bunch of circumstances. Added -LEADING_ZERO & -TRIM flags)
 * 2014-09-07 05:13:42 +0000: #0208: Fixed FORMAT:PERCENT (added optional leading zeroes option)
 * 2014-09-07 05:06:03 +0000: #0207: Deleted SB7:EMERGENCY (no longer needed)
 * 2014-09-07 04:46:40 +0000: #0206: Added GETBYTESFREE & ANGLES (just some utilities that will have value later, maybe)
 * 2014-09-07 02:05:38 +0000: #0205: Added ADDLOG (was added last night for purposes of debugging LDISTROY -ALL, so I intended to remove it when done. But it looks useful, so it stays)

[abuse.sb7]
 * 2014-09-07 23:26:41 +0000: #0221: Fixed @ABUSE:VERIFY_DATA (needs some work still; prints "changed data" message every time through)

[access.sb7]
 * 2014-11-04 16:11:39 +0000: #0307: Fixed multiple beads (completed fixen re: where access levels are stored: USERLEVEL:* vs ACCESS:* (winner: ACCESS:*))
 * 2014-11-04 15:50:38 +0000: #0305: Fixed ACCESS (two data streams were being created for tracking channel & global access: USERLEVEL:* and ACCESS:*. The intention was to change to ACCESS:* but it wasn't changed everywhere, breaking backwards-compatibility)
 * 2014-11-04 15:28:49 +0000: #0302: Renamed MSET to SET:ALL (more obvious when debugging)
 * 2014-10-08 14:28:26 +0000: #0262: Fixed ACCESS HELP (LIST wasn't showing the -SHORT flag option)
 * 2014-09-07 06:43:04 +0000: #0215: Fixed ACCESS ADD & MOD (a user with global access, who passes all other tests, should be able to add her/himself to a channel as well. Previously, this was blocked by a sanity check but it's really overkill)
 * 2014-09-07 06:35:14 +0000: #0212: Added ACCESS AUDIT

[archive.sb7]
 * 2014-10-08 14:28:38 +0000: #0269: Added ARCHIVE

[ban.sb7]
 * 2014-10-08 14:28:24 +0000: #0260: Fixed BAN DEL (when scanning for matches, if there was a failed match, it was shown as a 'fail' instead of being ignored)
 * 2014-10-08 14:28:23 +0000: #0259: Fixed BAN DEL (lock-level check code)
 * 2014-10-08 14:28:22 +0000: #0258: Added BAN to CORE & ZENKAI distros
 * 2014-10-08 14:28:21 +0000: #0257: Added BAN, EXEMPT, & INVEX (and counterparts: UNBAN, BANLIST, UNEXEMPT, EXEMPTLIST, UNINVEX, & INVEXLIST. Only BAN is coded; all the others are -REDIRECTs)
 * 2014-10-08 14:28:14 +0000: #0256: Added BAN, EXEMPT, & INVEX (and counterparts: UNBAN, BANLIST, UNEXEMPT, EXEMPTLIST, UNINVEX, & INVEXLIST. Only BAN is coded; all the others are -REDIRECTs into BAN (which handles them all))

[botmon.sb7]
 * 2014-10-12 08:51:58 +0000: #0297: fixed @BOTMON:SUSPEND_CHECK (the bootstrap code was causing an endless series of data file saves, each time it, itself, triggered. This was caused by an extra close-bracket ("]") in the sanity check, causing a false non-empty value to fall-through and be tested against an integer)

[botnet.sb7]
 * 2014-11-05 14:22:15 +0000: #0317: Fixed TREE (renamed from BOTTREE, in case errors polluted the original command; also forgot to change one of the sub-routined from SB:TREE_GETCHILDREN to TREE:GETCHILDREN)
 * 2014-11-05 11:13:23 +0000: #0309: Added BOTNET (currently: only BOTTREE) to ZENKAI
 * 2014-11-05 11:13:04 +0000: #0308: Added BOTTREE

[botsend.sb7]
 * 2014-09-07 06:42:01 +0000: #0214: Fixed @BOTSEND:COMPLETE (when a non-SB7-component was processed, don't try to MAINTENANCE LOAD it (like a picture file))

[chanmon.sb7]
 * 2014-11-05 14:18:58 +0000: #0316: Completed CHANMON (now fully functional; translation complete from SB6)
 * 2014-11-05 11:50:02 +0000: #0312: Added CHANMON to ZENKAI distribution
 * 2014-11-05 11:49:56 +0000: #0311: Added CHANMON (not complete yet; only partially translated from SB6)

[chanset.sb7]
 * 2014-10-08 14:29:06 +0000: #0275: Added CHANSET (code completed)
 * 2014-10-08 14:28:42 +0000: #0272: Added CHANINFO to CORe & ZENKAI distributions
 * 2014-10-08 14:28:39 +0000: #0270: Added CHANINFO to CORE & ZENKAI distributions

[chattr.sb7]
 * 2014-10-12 06:22:49 +0000: #0289: Added CHATTR to CORE & ZENKAI distributions
 * 2014-10-12 06:22:36 +0000: #0288: Added CHATTR

[config.sb7]
 * 2014-10-12 07:11:22 +0000: #0293: Adusted CHON:CHECK (renamed to CONFIG:CHECK:CHON)
 * 2014-10-12 07:09:30 +0000: #0292: Added CONFIG -GLOBAL BACKUP (controls if backups are done automatically after each / every save (via SAVEME); upgraded SAVEME accordingly)
 * 2014-10-12 06:49:50 +0000: #0291: Fixed CONFIG PUBCMD (cosmetic)
 * 2014-10-12 06:49:45 +0000: #0290: Fixed CONFIG INFO (cosmetic)
 * 2014-10-08 14:29:07 +0000: #0276: Added CONFIG -GLOBAL CHON & SET NOCHON (declare when a user joins DCC CHAT (the TCL bind for this is CHON: 'channel on'). The SET NOCHON option allows bot owners (=1000 only) to hide from it, in case they're privately monitoring their bots and how the bot is being used)

[debug.sb7]
 * 2014-11-04 15:28:49 +0000: #0302: Renamed MSET to SET:ALL (more obvious when debugging)
 * 2014-09-15 05:03:05 +0000: #0244: Upgraded DEBUG INFO (added DCCLIST breakdown and command-user info)
 * 2014-09-15 05:02:44 +0000: #0243: Upgraded DEBUG INFO (due to the length of output, broken each section into flaggable choices (HELP shows the choices by name; it's too much to try to clarify each definition). By default (no flags), -ALL is activated)

[note.sb7]
 * 2014-09-07 06:44:32 +0000: #0217: Fixed NOTE DELETE (cosmetic: "notes numbers" ... both words plural?! Oy ...)
 * 2014-09-07 06:44:27 +0000: #0216: Fixed NOTE DELETE (when no notes matched the requested range, the same text was still used but a blank list was presented: "#")

[op.sb7]
 * 2014-10-08 14:29:05 +0000: #0274: Fixed VOICE* (when command was used alone (reflexively), status report was showing "me" instead of the user's nick. It's not inaccurate, just ... cosmetically weird)
 * 2014-10-08 14:29:02 +0000: #0273: Fixed VOICE* (the aliases used to include the removal moved didn't work; always did mode-on interpretation. Also, HELP was duplicating $0U in output)
 * 2014-10-08 14:28:41 +0000: #0271: Fixed VOICE* (the aliases used to include the removal modes didn't work as desired; always did mode-on interpretation. Also, HELP was duplicating $0U in output)

[oper.sb7]
 * 2014-11-04 15:15:49 +0000: #0301: Added OPER SERVERS VERSION (based on a private script, collects VERSION information from the servers within the OPER SERVERS list)

[rehash.sb7]
 * 2014-10-26 05:37:14 +0000: #0299: Fixed SAVE & BACKUP (output was to user only, not to $HOME. Just forgot, I guess)
 * 2014-10-12 08:36:09 +0000: #0295: Added SB7:BACKUP (performs backup of specified files)
 * 2014-10-08 14:28:37 +0000: #0268: Fixed REHASH & RESTART (added DATA SAVE)
 * 2014-10-08 14:28:36 +0000: #0267: Fixed REHASH & RESTART (added DATA SAVE)

[set.sb7]
 * 2014-10-08 14:29:07 +0000: #0276: Added CONFIG -GLOBAL CHON & SET NOCHON (declare when a user joins DCC CHAT (the TCL bind for this is CHON: 'channel on'). The SET NOCHON option allows bot owners (=1000 only) to hide from it, in case they're privately monitoring their bots and how the bot is being used)

[textpad.sb7]
 * 2014-11-04 16:11:39 +0000: #0307: Fixed multiple beads (completed fixen re: where access levels are stored: USERLEVEL:* vs ACCESS:* (winner: ACCESS:*))

Any questions, see us at chat.bothouse.net in #BotHouse

~ Mai Mizuno, StormBot.TCL coder

Signed-off-by: Dustin <demonicpagan@gmail.com>