# pbot3 changelog and todo list # # TODO: A bit more refactoring and clean-ups and conversion to OOP # # TODO: add support for admin management - needs support for adding/removing/saving! [for 1.0] # TODO: multi-channel support needs improvement (note 12/08/09, fixed multi-channel for anti-flood and for ignore) # e.g., factoids need channel parameter, e.g. C factoids vs. C++ factoids (with an option to allow a factoid across all channels) # [for 1.0] # # TODO: Ignorelist needs to save and load from file, use regex hash keys/search parameters. # # 0.6.3-beta (03/26/10): Improved !find command by adding optional -owner and -by search parameters. # 0.6.2-beta (03/25/10): 'list messages' command significantly improved -- can use regexs search parameters. # Added optional regex search to 'rq' quotegrab command to match against quotegrab text. # 0.6.1-beta (03/23/10): Quotegrab ids properly adjusted when deleting quotegrab. # Admins loads from file, uses regex hash keys. # Lots of misc tweaks and improvements throughout. # 0.6.0-beta (03/22/10): Converted everything into objects with zero exports. # Replaced with sysread(STDIN, ...) in StdinReader.pm as to not mix buffered IO with select() # 0.5.0-beta (03/16/10): split single large pbot2.pl file into packages and modules # replaced nick@host with full nick!user@host hostmask throughout [TODO for admin stuff (logged_in, etc)] # ignore list saves/loads [TODO] # factoids/modules now case-insensitive in interpret_command # when using !tell foo about bar, replaced "(nick)" on end of text with "nick wants you to know:" at beginning of text # added STDIN reader and pass all input to interpret_command (was fun working out the POSIX suspend/bg/fg kinks!) # lots of code clean-up and refactoring # 0.4.6 (03/06/10): channel name now always lower-cased in hashes # added trigger for NOTICE events # 0.4.5 (12/11/09): set quotegrab id when loading and grabbing; export quotegrabs to webpage # 0.4.4 (12/10/09): added [channel] optional parameter to !grab # fixed !rq's [channel] parameter # 0.4.3 (12/10/09): added !delq to delete quotegrabs # 0.4.2 (12/09/09): added support for quotegrabs: !grab, !getq, and !rq # 0.4.1 (12/08/09): improved anti-flood system to be significantly more accurate and per-channel # added per-nick-per-channel message history using %flood_watch # add per-channel support to ignore system # automatically remove message history for nicks that haven't spoken in one day (run once per hour) # do not ignore !login command # 0.3.16(11/23/09): refactored module execution to execute_module() subroutine # added trigger to execute get_title.pl module when URL is # detected in regular untriggered chat # 0.3.15(11/20/09): replace 'me' with '$nick' in arguments # 0.3.14(07/03/07): do not expand escaped dollar-signs in factoids (adlib) # 0.3.13(07/01/07): fork all modules # added unload_module, enable_command, disable_command # automatically export factoids every $export_factoids_timeout seconds # 0.3.12(05/20/07): lol? Prevent recursive aliasing infinite loop, x -> a, a -> x # 0.3.11(05/20/07): added 'alias' # 0.3.10(05/08/05): dont ban by nick, wait for nickserv response before joining chans # 0.3.9 (05/06/05): stop logging joins, fixed join flood ban? # 0.3.8 (04/28/05): changed 'top10' to 'top20' throughout # 0.3.7 (04/28/05): 'top10 recent' command lists 10 most recent factoid additions # 0.3.6 (04/15/05): join/part flood earns ban (broken, I'm lazy) # 0.3.5 (03/24/05): fix bug in interpret_command re $commands and $keyword # keeps track of op state in multi-channels (but not commands) # added nick searching to top10 # 0.3.4 (03/22/05): added kick # list also lists admins # ban also kicks nick # unban also modes -b in addition to ChanServ AUTOREM DEL # oops, moved $is_opped = 0 from lose_ops() to on_mode() # 0.3.3 (03/21/05): added ban, unban using ChanServ AUTOREM # 0.3.2 (03/20/05): stays opped for a minimum of 5 minutes before deop # 0.3.1 (03/18/05): log out departed admins # implemented ignore and unignore # flooding with commands triggers timed ignore # no flood consequences for logged in admins # 0.3.0 (03/17/05): Hi-res timer support. # renamed %admin_commands to %internal_commands # added admin levels to %admin_commands # added access levels to internal commands # interpret_command uses access levels and checks login status # removed all extraneous loggedin() checks # internal commands processed before bot commands # added flood control # flooding channel tiggers timed quiet # 0.2.18(03/16/05): direct at $nick within channel # 0.2.17(03/11/05): Most confirmation and warning messages sent via /msg # restricted parsing to bot's name or ! only # 0.2.16(03/02/05): added '/msg' # /msg doesn't show ($nick) if admin # 0.2.15(02/20/05): special variable lists, "adlibs" # 0.2.14(02/19/05): added $botnick and $altbotnick # added more rules to trigger interpret_command # added '/me' # added '$args', allowed factoids to take arguments # 0.2.13(02/19/05): added '/say' for no ' is' # added $nick expansion in factoids # added 'show' command to display factoid literal # 0.2.12(02/16/05): improved html for export # added 'commands' to list command # 0.2.11(02/12/05): added popularity to 'info' command # 'top10' command for factoids # 0.2.10(02/07/05): added histogram command # 0.2.9 (02/03/05): info || info # find # use eval {} in change_text # count returns # of factoids has submitted # 0.2.8 (02/02/05): change_text: show result of change # ... debugging prints throughout # Allowed factoids to be appended using 'is also' # 0.2.7 (01/27/05): Removed ' for ' syntax to direct # a command at a user. Using 'tell about ' # instead. # 0.2.6 (01/22/05): Major source overhaul. # Allowed any non-word character to be used # as delimiter in change_text. # 0.2.5 (01/18/05): Don't die in save_commands. # 0.2.4 (01/18/05): Added 'change' command. # 0.2.3 (01/17/05): Allowed factoids to be added using '%foo is bar' # 0.2.2 (01/17/05): Responds only when addressed or explicitly triggered. # 0.2.1 (01/17/05): Allowed trailing question marks. # Allowed 'is' for add_text. # Some minor bug fixes. # Aliased forget => remove. # 0.2.0 (01/16/05): Revamped hash structures for factoids. # All commands have a timestamp and owner. # Added 'export' command and modifed 'list'. # 0.1.4 (01/16/05): Minor tweaks and fixes for logging. # 0.1.3 (01/16/05): Can direct commands at nicks. # example: man fork for # 0.1.2 (01/15/05): Added 'list' admin command. # 0.1.1 (01/15/05): Some minor tweaks and fixes. # 0.1.0 (01/15/05): Initial version