| 1 | = Changelog = |
| 2 | |
| 3 | This is a record of all changes made to zomg since the original release. |
| 4 | I find it interesting to view my own development patterns, you might as well. |
| 5 | |
| 6 | This file will be included with the subversion repository as well. |
| 7 | |
| 8 | == Version 0.8.2 – August 11th 2010 == |
| 9 | |
| 10 | * Added !weather |
| 11 | * Added GeoIP support to !weather |
| 12 | * Added !locate |
| 13 | * Added .addword |
| 14 | * Added .delword |
| 15 | * Added .loadwords |
| 16 | * Added several new custom commands to demo new functionality |
| 17 | * For example, !8ball and !fight |
| 18 | * Bot now leaves 'empty' channels and waits for a notice from ChanServ that a person has joined before coming back. |
| 19 | * A channel containing only the bot and ChanServ is considered 'empty' |
| 20 | * Using !alias and .alias will now allow you to put*!*@ in front of a hostmask, just for convenience. |
| 21 | * Converted documentation to Wiki format and moved to new location |
| 22 | * Extended the functionality of Custom Commands considerably |
| 23 | * Added $pick[arg1,arg2,arg3,...,argN] (Does not support spaces in the args yet) |
| 24 | * Changed $rint to $rand |
| 25 | * Added $rand[min,max] (Integer values only) |
| 26 | * Added $uc[text] and $lc[text] (Do not support spaces yet) |
| 27 | * Extended the functionality of Custom Variables considerably |
| 28 | * Variables can now be added on the fly by an oper with the addword command |
| 29 | * All [ ] variables are fully nestable, including with existing optional args that have defaults enclosed in [ ] |
| 30 | * Variables can be enclosed in { } if ambiguous. For example, |
| 31 | * $balls will look for a word category "balls" |
| 32 | * ${ball}s will look for a word category "ball" and add the "s" to the end of whatever $ball it chooses. |
| 33 | * Optimized startup time |
| 34 | * Fixed bug where bot would not respond to custom commands if addressed by name |
| 35 | * Fixed several command parsing bugs |
| 36 | * Restored !wotd hint option for regular users |
| 37 | * Moved zomg's code into a subversion repository |
| 38 | * Made svn repository publicly accessible |
| 39 | * svn co svn://vsterminus.homelinux.org/zomg |
| 40 | * Secured code to load sensitive data from elsewhere |
| 41 | |
| 42 | == Version 0.8.1 – December 2nd 2009 == |
| 43 | |
| 44 | * Moved help page to static.socialgamer.net |
| 45 | * Updated help command to reflect this |
| 46 | * Updated help page formatting and style |
| 47 | * Bot no longer auto-rejoins when kicked by ChanServ |
| 48 | * Fixed !stfu length when a time was not specified |
| 49 | * !nowplaying now uses the Last.FM API instead of screen scraping |
| 50 | * Smaller output (1 line instead of 3) |
| 51 | * API doesn't give me the player information (yet). Sorry. |
| 52 | * Added more functionality to !lastfm |
| 53 | * You can now customize your !nowplaying output |
| 54 | * Syntax is different now, please read the entry for it |
| 55 | * !alias now accepts and removes*!*@ prefix on hostnames. |
| 56 | |
| 57 | == Version 0.8.0 – October 28th 2009 == |
| 58 | |
| 59 | * Big update, long time |
| 60 | * With school, working on the new SocialGamer beta site, and other commitments it can be hard to find time to develop zomg further |
| 61 | * Changed the database serialization (storage) system |
| 62 | * Previously used the XML::Dumper perl module to convert all of my hash tables, important variables and other data into a convenient XML file that could be read on startup to restore information. |
| 63 | * XML::Dumper is Extremeley inefficient, and was causing me to use several hundred MB of RAM at run time! o_O |
| 64 | * Switched to YAML::XS (A perl module written in C) I can serialize the database into a single human-readable string of data and store that in a file |
| 65 | * RAM usage is now 1/10th of what it was previously |
| 66 | * I can still reduce this further with optimizations to save/load and cleaning old/invalid/unnecessary data in other areas. |
| 67 | * Added !fml |
| 68 | * May add an option to select a specific entry or grab the latest entry if there is interest |
| 69 | * Added !wtf |
| 70 | * Uses the system `wtf` command, which contains definitions for common acronyms (Like 'LOL' and 'wtf') as well as man page entries for most apps |
| 71 | * The wtf database is not really that extensive, and a response of 'Nothing Appropriate' means 'I don't know' |
| 72 | * Modified the now playing (!mp3) command to use Last.FM |
| 73 | * Renamed the !mp3 command to !nowplaying |
| 74 | * Added a hard-coded alias, !mp3 which redirects to the new command. Usage doesn't change. |
| 75 | * Command spans 1-3 lines of output, and so can only be used every 20 or so seconds to reduce spam. |
| 76 | * Added !lastfm <last.fm-account> | none |
| 77 | * Fixed a couple regex matches (Thanks Thierry for breaking it and Grinnz for solving it) |
| 78 | * Added !drums |
| 79 | * Wrote a search function into this command, so if you can't spell it will try to help. |
| 80 | * Added the ability to use the $ variables from custom commands in all commands (With the exception of $1,2,3 etc because that's just silly) |
| 81 | * Added some new variables for use (They work in any command, not just customs!) |
| 82 | * $noun, $verb, $pronoun, $adverb, $preposition, $adjective, $clothing |
| 83 | * Fixed default parameter parsing |
| 84 | * Added new words to the word of the day file |
| 85 | |
| 86 | |
| 87 | == Version 0.7.4 – September 1st 2009 == |
| 88 | |
| 89 | * Added uptime to restart message |
| 90 | * Added a 10 second ban to channel protections by default |
| 91 | * Breaks sf ban currently, will be removing that. |
| 92 | * Added <nick>++ or <nick>-- triggers for awarding wins to users |
| 93 | * Added <nick>+=, -=,*= and /= as well |
| 94 | * eg. toymachine++ is equivalent to .award toymachine 1 |
| 95 | * and toymachine+=5 is equivalent to .award toymachine 5 |
| 96 | * A word of the day system to award users with wins |
| 97 | * The word is selected at random, but can be set by an oper |
| 98 | * When the word is guessed, a new word is chosen (At random) |
| 99 | * A word un-guessed for 24 hours will expire next time anyone uses !wordoftheday |
| 100 | * Might update this to use a timer system in the future |
| 101 | * Tripping the spamfilter also removes 1 win now. |
| 102 | * Commands via PM can now be done without a trigger |
| 103 | * eg. /msg zomg time |
| 104 | * Custom Commands now support required parameters |
| 105 | * Variables defined with $ are optional, where as variables defined with & will be required. If a required parameter is left undefined, the command will error and ask for more input. |
| 106 | * !listcmd now displays the access level required to use the command |
| 107 | * Fixed glitch in !wins when looking up offline users |
| 108 | * Added !slogan |
| 109 | * Added $rword, $rnick, and $rint variables to custom commands |
| 110 | * Added defaults-system to optional args in custom commands |
| 111 | * Added !bantime to allow channel admins to adjust the default ban length in their channel |
| 112 | * Fixed arg swapping in custom commands |
| 113 | * Fixed .enable to support command aliases |
| 114 | * Made the word of the day game configurable per channel |
| 115 | * By default, disabled. Can be enabled with !wordoftheday on |
| 116 | * Removed the word-of-the-day hint, too spammy |
| 117 | * Time input for bans, kickbans and stfu now support a more human-readable format (ex, 5h15m10s) |
| 118 | * Bot no longer freaks out if words.txt doesn't exist |
| 119 | * Database is now loaded before connecting to the server |
| 120 | * The DB is getting so big that it was causing the bot to time out and lose connection |
| 121 | * Considering splitting this file up into a few smaller files, or maybe truncating data |
| 122 | |
| 123 | |
| 124 | |
| 125 | == Version 0.7.3 – July 29th 2009 == |
| 126 | |
| 127 | * Fixed bug in timed kickbans using regex matches |
| 128 | * Fixed !uptime's parsing of CPU uptime when there is only 1 user |
| 129 | * !mass now supports custom commands |
| 130 | * Re-wrote the todo list to use a hash instead of an array |
| 131 | * Index values will be unique to each item added. They will continue to increase, instead of the list squishing down when something is removed. |
| 132 | * Added greet type 'public' to greet users publicly in the channel |
| 133 | * oper .alias <user> will send via PM if more than 15 results are found in a lookup |
| 134 | * Fixed bot's own nick recognition if the server changes its name |
| 135 | * added !top3 wins |
| 136 | * Improved sorting code in !top3 |
| 137 | * Added !top3 peaks |
| 138 | * Reduced resolution of time tracking since peak was set |
| 139 | * Added !top3 customs |
| 140 | * Added 'who is banned' (Thanks SoccerThierry) |
| 141 | |
| 142 | |
| 143 | == Version 0.7.2 – July 15th 2009 == |
| 144 | |
| 145 | * Added !uptime |
| 146 | * User definitions are now displayed with !whois as well |
| 147 | * Variables in custom commands that are left undefined will be hidden from output |
| 148 | * Added $server, $unixtime and $localtime to the custom command variable list |
| 149 | * Fixed a bug when adding custom commands using a command alias |
| 150 | * “Who/What is defined” now sends via PM |
| 151 | * !alias shows the user's hostmask as well |
| 152 | * Fixed custom commands with 'Service' access level |
| 153 | * Fixed !cmdlist when applied to a global custom command |
| 154 | * Prevented saving during DB loading, hopefully to stop accidental DB corruption |
| 155 | * Modified the error message when a user tries to kick an admin to include the username |
| 156 | * Added !time global custom command (Access required: None) |
| 157 | * Added 'who banned <user>' to go along with 'who kicked <user>' |
| 158 | * Modified the way 'who kicked <user>' is stored and displayed |
| 159 | * Better tracking of the $server variable |
| 160 | * Added .restart for opers |
| 161 | |
| 162 | |
| 163 | |
| 164 | == Version 0.7.1 – May 11th 2009 == |
| 165 | |
| 166 | * Started tracking how many messages each user sends (April 30) |
| 167 | * Used for top3 command |
| 168 | * Added !top3 |
| 169 | * Added !text |
| 170 | * Updated !stfu, !ban, and !kickban to allow users to specify a duration (in minutes) |
| 171 | * Improved Auto-Save to create a backup of the db every hour |
| 172 | * Database got corrupted on May 5, most recent manual backup was April 22 |
| 173 | * Various grammatical, aesthetic changes |
| 174 | * Bug fixes to |
| 175 | * Nick Filter |
| 176 | * Stfu |
| 177 | * kick/kickban |
| 178 | * Specifically regex matches no longer match against the bot's nick, regardless. |
| 179 | * Top3 commands works properly now |
| 180 | |
| 181 | |
| 182 | == Version 0.7.0 – April 29th 2009 == |
| 183 | |
| 184 | * Added Custom Commands! |
| 185 | * Big help file entry for these..... |
| 186 | * In any channel, Voiced users can use !cclist to view existing custom commands in that channel |
| 187 | * Voiced users can also use !ccinfo <custom-command> to see info on any existing custom command |
| 188 | * Added Global Custom Commands |
| 189 | * Same as regular custom commands, but apply to all channels |
| 190 | * It is possible, using customs and global customs, to give regular users access to oper-only commands, or certain parts (eg pre-defined args) of an oper-only command. |
| 191 | * In any channel, voiced users can use !gclist to see all existing global customs |
| 192 | * voiced users can also use !gcinfo <global-custom> to see info on a global custom command. |
| 193 | * Added !greet |
| 194 | * !cmdlist now supports custom commands as well |
| 195 | * This obsoletes the global !ccinfo custom command, which I will be removing |
| 196 | * Nickfilter now ignores self |
| 197 | * aka you cannot make the bot ban itself using a nick filter |
| 198 | * Added !wins |
| 199 | * For users to check wins |
| 200 | * Added .award |
| 201 | * For opers to hand out wins |
| 202 | * Added !floodban (About time) |
| 203 | * Added additional syntax to !autobans |
| 204 | * This supports banning repeat offenders automatically in your channel |
| 205 | * By default, anyone who trips your spamfilter, or any of the autobans 3 times in 5 minutes will receive a 30 minute ban. This is configurable, but always enabled. |
| 206 | * Fixed a small glitch with spamban where looking for excess repeat chars was not done properly |
| 207 | * Some updates to .stats |
| 208 | * Addition of .stats customs (For custom command stats) |
| 209 | * Syntax modification |
| 210 | |
| 211 | |
| 212 | == Version 0.6.9 – April 19th 2009 == |
| 213 | |
| 214 | * Added repeat support to timers |
| 215 | * Syntax change, please note it |
| 216 | * Timers command now assumes channel if not specified |
| 217 | * Kick and Kickban now support Regex matching! |
| 218 | * Works for opers and regular users too |
| 219 | * Case insensitive by default |
| 220 | * Added .amsg |
| 221 | * Send a message to all channels the bot is currently in |
| 222 | * Not particularly useful I suppose, but it's something. |
| 223 | * Added .enable and .disable |
| 224 | * Opers can disable commands now |
| 225 | * Only applies to regular user commands (.disable enable would be stupid) |
| 226 | * Added oper version of .stfu |
| 227 | * Check for oper removed |
| 228 | * Auto-devoices, dehalfops and deops the person in question |
| 229 | * Added !me |
| 230 | * Same as /me, but makes the bot use it |
| 231 | * Added handler for actions |
| 232 | * Previously, the bot did not see actions (/me) at all |
| 233 | |
| 234 | |
| 235 | |
| 236 | == Version 0.6.8 – April 14th 2009 == |
| 237 | |
| 238 | * Improved mode parser |
| 239 | * Still doesn't handle -qaohv well though |
| 240 | * Improvements to timer system |
| 241 | * See: Total overhaul |
| 242 | * Improved timer accuracy from 10s to 1s |
| 243 | * Added !nickfilter |
| 244 | * Added hourly auto-save |
| 245 | * Found out that Net::IRC doesn't parse extbans properly |
| 246 | * Added a workaround for this in my mode parser |
| 247 | * Added .timers |
| 248 | * No args: list existing timers |
| 249 | * add |
| 250 | * del |
| 251 | * # (Display info for a specific timer) |
| 252 | * Timers are now saved between sessions |
| 253 | * Modified the way timers are parsed |
| 254 | * Now stores the nick that created the timer |
| 255 | * All Private Messages sent to zomg are now forwarded to vsTerminus |
| 256 | |
| 257 | |
| 258 | == Version 0.6.7 – April 1st 2009 == |
| 259 | |
| 260 | * Added .whisperback |
| 261 | * Added !mp3 |
| 262 | * Fixed Modelock |
| 263 | * Added some extra protection against XML db corruption |
| 264 | * Added !spamfilter |
| 265 | * Added .kickban for opers |
| 266 | * Added a mode parser |
| 267 | * No longer need to /who the channel on mode changes! |
| 268 | * Help file updates |
| 269 | * Moved to an HTML format |
| 270 | * Hosted on my machine instead of omploader |
| 271 | |
| 272 | |
| 273 | == Version 0.6.6 – March 2nd 2009 == |
| 274 | |
| 275 | * Added .addchan |
| 276 | * Added !announce |
| 277 | * Very different from announce in the old zomg |
| 278 | * Added logging |
| 279 | * One file per channel |
| 280 | * Command log |
| 281 | * Kick log |
| 282 | * Added an option to !who |
| 283 | * !who <banned|kicked> <user> |
| 284 | * Fixed to-do list saving. |
| 285 | * Added !autobans |
| 286 | * Added !capsban |
| 287 | * Added !spamban |
| 288 | * Added !repeatban |
| 289 | * Fixed some warnings in on_text and parseCommand subs |
| 290 | * Improved command handling and multi-command handling |
| 291 | |
| 292 | |
| 293 | == Version 0.6.5 – February 27th 2009 == |
| 294 | |
| 295 | * Modified topic template |
| 296 | * Fixed topic tracking for topics set by other users |
| 297 | * Added command aliases, definable by opers |
| 298 | * .addcmd <New Command> <Existing Target Command> |
| 299 | * .delcmd <Command Alias> |
| 300 | * .listcmd <Command Alias | Command> |
| 301 | * Removed the 'did you mean' responses, they were just annoying and cropping up too often |
| 302 | * Added more options to .stats |
| 303 | * .stats users|kicks|text|peak|defs |
| 304 | |
| 305 | == Version 0.6.4 – February 23rd 2009 == |
| 306 | |
| 307 | * Added comical 'did you mean' on invalid commands |
| 308 | * Added protection to !stfu to stop it from accepting empty args |
| 309 | * Upgraded the multi-command parsing to be more intuitive |
| 310 | * If a command in the string does not exist, it will be treated as the arg for the most recent successful command, allowing any command to take multiple args (essentially). |
| 311 | * eg. !stfu Xyzzy; Scissors, Pie |
| 312 | * 'who is defined' now lists users for opers. |
| 313 | * Topic text is now filtered when stored to prevent XML errors. |
| 314 | * Added .todo |
| 315 | * Added .done |
| 316 | * Fixed another glitch with nick changes |
| 317 | * Bot will no longer attempt to parse blank commands during multi-parsing |
| 318 | * Fixed problem with 'who/what is defined' not splitting lists into multiple messages |
| 319 | * Added option 'list' for the oper join command. |
| 320 | * Added !peak |
| 321 | * Also added oper .peak |
| 322 | * Added peak info to .stats |
| 323 | * Stats by default uses a compressed, one-message format |
| 324 | * Optionally, user can pass 'v' or 'verbose' to get the full, multi-line version with additional info. |
| 325 | * Fixed regex for special 'who is' and 'what is' commands |
| 326 | * Added oper .help which allows sending to other users (also massable) |
| 327 | * Fixed a check in the mass command |
| 328 | |
| 329 | |
| 330 | == Version 0.6.3 – February 11th 2009 == |
| 331 | |
| 332 | * Added !kickcount |
| 333 | * Added !kickme |
| 334 | * Added two new hashes |
| 335 | * %kicks # Stores info on all kicks seen |
| 336 | * %mykicks # Stores info on kicks by the bot |
| 337 | * Fixed tracking of hostmasks on nick changes |
| 338 | * Added more info to stats |
| 339 | * Fixed glitch in the mass command where it wasn't checking the opers hash |
| 340 | * Reset the kick counter in favor of having accurate kick data |
| 341 | |
| 342 | |
| 343 | == Version 0.6.2 – February 11th 2009 == |
| 344 | |
| 345 | * Removed !addban |
| 346 | * Added a %hosts hash to keep the hosts for users seperate from the user objects |
| 347 | * This makes it easier to track whether a user is online or offline |
| 348 | * Adjusted !whois output to reflect offline users |
| 349 | * Added .stats |
| 350 | * Adjusted on_quit and on_part events |
| 351 | * Changed !help to send a NOTICE instead of a PM |
| 352 | |
| 353 | == Version 0.6.1 – February 10th 2009 == |
| 354 | |
| 355 | * Added .say |
| 356 | |
| 357 | * Added !cycle |
| 358 | * Added !rr |
| 359 | * Added !nn |
| 360 | * Added !censor |
| 361 | * Added !mute |
| 362 | * Added !strip |
| 363 | * Added support to catch SIG{TERM} and SIG{INT} and save before exiting |
| 364 | |
| 365 | == Version 0.6.0 – February 10th 2009 (Initial Release) == |
| 366 | |
| 367 | * Why start at 0.6.0? |
| 368 | *For those who remember the original zomg project, it was written in mIRC script and as it grew it became increasingly troublesome to work with. |
| 369 | * It was at version 0.5.x when I dropped it and moved to zomg in Perl, so I just bumped the version up to 0.6.0 and kept going. |