Changelog
This is a record of all changes made to zomg since the original release. I find it interesting to view my own development patterns, you might as well.
Version 0.8.4 – In Progress
- Fix: zomg should no longer apply nickfilters to the entire channel when someone joins
- Added !xbl and !psn
- Fix: HTML::Entities applied to a number of commands
- !weather no longer displays a URL when it can't get the weather.
Version 0.8.3 – October 25th 2010
- Dropping the "Defiance" name from the code and docs. People recognize the bot as "zomg".
- Moved zomg to my own server (freeing up some resources on the SG server for RB3)
- Set up a persistent ZNC connection for zomg
- Ideally you won't even notice when I reconnect the bot for updates and fixes
Version 0.8.2 – August 11th 2010
- Added !weather
- Added GeoIP support to !weather
- Added !locate
- Added .addword
- Added .delword
- Added .loadwords
- Added several new custom commands to demo new functionality
- For example, !8ball and !fight
- Bot now leaves 'empty' channels and waits for a notice from ChanServ that a person has joined before coming back.
- A channel containing only the bot and ChanServ is considered 'empty'
- Using !alias and .alias will now allow you to put*!*@ in front of a hostmask, just for convenience.
- Converted documentation to Wiki format and moved to new location
- Extended the functionality of Custom Commands considerably
- Added $pick[arg1,arg2,arg3,...,argN] (Does not support spaces in the args yet)
- Changed $rint to $rand
- Added $rand[min,max] (Integer values only)
- Added $uc[text] and $lc[text] (Do not support spaces yet)
- Extended the functionality of Custom Variables considerably
- Variables can now be added on the fly by an oper with the addword command
- All [ ] variables are fully nestable, including with existing optional args that have defaults enclosed in [ ]
- Variables can be enclosed in { } if ambiguous. For example,
- $balls will look for a word category "balls"
- ${ball}s will look for a word category "ball" and add the "s" to the end of whatever $ball it chooses.
- Optimized startup time
- Fixed bug where bot would not respond to custom commands if addressed by name
- Fixed several command parsing bugs
- Restored !wotd hint option for regular users
- Moved zomg's code into a subversion repository
- Made svn repository publicly accessible
- svn co svn://vsterminus.homelinux.org/zomg
- Secured code to load sensitive data from elsewhere
Version 0.8.1 – December 2nd 2009
- Moved help page to static.socialgamer.net
- Updated help command to reflect this
- Updated help page formatting and style
- Bot no longer auto-rejoins when kicked by ChanServ
- Fixed !stfu length when a time was not specified
- !nowplaying now uses the Last.FM API instead of screen scraping
- Smaller output (1 line instead of 3)
- API doesn't give me the player information (yet). Sorry.
- Added more functionality to !lastfm
- You can now customize your !nowplaying output
- Syntax is different now, please read the entry for it
- !alias now accepts and removes*!*@ prefix on hostnames.
Version 0.8.0 – October 28th 2009
- Big update, long time
- With school, working on the new SocialGamer? beta site, and other commitments it can be hard to find time to develop zomg further
- Changed the database serialization (storage) system
- 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.
- XML::Dumper is Extremeley inefficient, and was causing me to use several hundred MB of RAM at run time! o_O
- 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
- RAM usage is now 1/10th of what it was previously
- I can still reduce this further with optimizations to save/load and cleaning old/invalid/unnecessary data in other areas.
- 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.
- Added !fml
- May add an option to select a specific entry or grab the latest entry if there is interest
- Added !wtf
- Uses the system wtf command, which contains definitions for common acronyms (Like 'LOL' and 'wtf') as well as man page entries for most apps
- The wtf database is not really that extensive, and a response of 'Nothing Appropriate' means 'I don't know'
- Modified the now playing (!mp3) command to use Last.FM
- Renamed the !mp3 command to !nowplaying
- Added a hard-coded alias, !mp3 which redirects to the new command. Usage doesn't change.
- Command spans 1-3 lines of output, and so can only be used every 20 or so seconds to reduce spam.
- Added !lastfm <last.fm-account> | none
- Fixed a couple regex matches (Thanks Thierry for breaking it and Grinnz for solving it)
- Added !drums
- Wrote a search function into this command, so if you can't spell it will try to help.
- 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)
- Added some new variables for use (They work in any command, not just customs!)
- $noun, $verb, $pronoun, $adverb, $preposition, $adjective, $clothing
- Fixed default parameter parsing
- Added new words to the word of the day file
Version 0.7.4 – September 1st 2009
- Added uptime to restart message
- Added a 10 second ban to channel protections by default
- Breaks sf ban currently, will be removing that.
- Added <nick>++ or <nick>-- triggers for awarding wins to users
- Added <nick>+=, -=,*= and /= as well
- eg. toymachine++ is equivalent to .award toymachine 1
- and toymachine+=5 is equivalent to .award toymachine 5
- A word of the day system to award users with wins
- The word is selected at random, but can be set by an oper
- When the word is guessed, a new word is chosen (At random)
- A word un-guessed for 24 hours will expire next time anyone uses !wordoftheday
- Might update this to use a timer system in the future
- Tripping the spamfilter also removes 1 win now.
- Commands via PM can now be done without a trigger
- eg. /msg zomg time
- Custom Commands now support required parameters
- 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.
- !listcmd now displays the access level required to use the command
- Fixed glitch in !wins when looking up offline users
- Added !slogan
- Added $rword, $rnick, and $rint variables to custom commands
- Added defaults-system to optional args in custom commands
- Added !bantime to allow channel admins to adjust the default ban length in their channel
- Fixed arg swapping in custom commands
- Fixed .enable to support command aliases
- Made the word of the day game configurable per channel
- By default, disabled. Can be enabled with !wordoftheday on
- Removed the word-of-the-day hint, too spammy
- Time input for bans, kickbans and stfu now support a more human-readable format (ex, 5h15m10s)
- Bot no longer freaks out if words.txt doesn't exist
- Database is now loaded before connecting to the server
- The DB is getting so big that it was causing the bot to time out and lose connection
- Considering splitting this file up into a few smaller files, or maybe truncating data
Version 0.7.3 – July 29th 2009
- Fixed bug in timed kickbans using regex matches
- Fixed !uptime's parsing of CPU uptime when there is only 1 user
- !mass now supports custom commands
- Re-wrote the todo list to use a hash instead of an array
- Index values will be unique to each item added. They will continue to increase, instead of the list squishing down when something is removed.
- Added greet type 'public' to greet users publicly in the channel
- oper .alias <user> will send via PM if more than 15 results are found in a lookup
- Fixed bot's own nick recognition if the server changes its name
- added !top3 wins
- Improved sorting code in !top3
- Added !top3 peaks
- Reduced resolution of time tracking since peak was set
- Added !top3 customs
- Added 'who is banned' (Thanks SoccerThierry?)
Version 0.7.2 – July 15th 2009
- Added !uptime
- User definitions are now displayed with !whois as well
- Variables in custom commands that are left undefined will be hidden from output
- Added $server, $unixtime and $localtime to the custom command variable list
- Fixed a bug when adding custom commands using a command alias
- “Who/What? is defined” now sends via PM
- !alias shows the user's hostmask as well
- Fixed custom commands with 'Service' access level
- Fixed !cmdlist when applied to a global custom command
- Prevented saving during DB loading, hopefully to stop accidental DB corruption
- Modified the error message when a user tries to kick an admin to include the username
- Added !time global custom command (Access required: None)
- Added 'who banned <user>' to go along with 'who kicked <user>'
- Modified the way 'who kicked <user>' is stored and displayed
- Better tracking of the $server variable
- Added .restart for opers
Version 0.7.1 – May 11th 2009
- Started tracking how many messages each user sends (April 30)
- Used for top3 command
- Added !top3
- Added !text
- Updated !stfu, !ban, and !kickban to allow users to specify a duration (in minutes)
- Improved Auto-Save to create a backup of the db every hour
- Database got corrupted on May 5, most recent manual backup was April 22
- Various grammatical, aesthetic changes
- Bug fixes to
- Nick Filter
- Stfu
- kick/kickban
- Specifically regex matches no longer match against the bot's nick, regardless.
- Top3 commands works properly now
Version 0.7.0 – April 29th 2009
- Added Custom Commands!
- Big help file entry for these.....
- In any channel, Voiced users can use !cclist to view existing custom commands in that channel
- Voiced users can also use !ccinfo <custom-command> to see info on any existing custom command
- Added Global Custom Commands
- Same as regular custom commands, but apply to all channels
- 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.
- In any channel, voiced users can use !gclist to see all existing global customs
- voiced users can also use !gcinfo <global-custom> to see info on a global custom command.
- Added !greet
- !cmdlist now supports custom commands as well
- This obsoletes the global !ccinfo custom command, which I will be removing
- Nickfilter now ignores self
- aka you cannot make the bot ban itself using a nick filter
- Added !wins
- For users to check wins
- Added .award
- For opers to hand out wins
- Added !floodban (About time)
- Added additional syntax to !autobans
- This supports banning repeat offenders automatically in your channel
- 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.
- Fixed a small glitch with spamban where looking for excess repeat chars was not done properly
- Some updates to .stats
- Addition of .stats customs (For custom command stats)
- Syntax modification
Version 0.6.9 – April 19th 2009
- Added repeat support to timers
- Syntax change, please note it
- Timers command now assumes channel if not specified
- Kick and Kickban now support Regex matching!
- Works for opers and regular users too
- Case insensitive by default
- Added .amsg
- Send a message to all channels the bot is currently in
- Not particularly useful I suppose, but it's something.
- Added .enable and .disable
- Opers can disable commands now
- Only applies to regular user commands (.disable enable would be stupid)
- Added oper version of .stfu
- Check for oper removed
- Auto-devoices, dehalfops and deops the person in question
- Added !me
- Same as /me, but makes the bot use it
- Added handler for actions
- Previously, the bot did not see actions (/me) at all
Version 0.6.8 – April 14th 2009
- Improved mode parser
- Still doesn't handle -qaohv well though
- Improvements to timer system
- See: Total overhaul
- Improved timer accuracy from 10s to 1s
- Added !nickfilter
- Added hourly auto-save
- Found out that Net::IRC doesn't parse extbans properly
- Added a workaround for this in my mode parser
- Added .timers
- No args: list existing timers
- add
- del
- # (Display info for a specific timer)
- Timers are now saved between sessions
- Modified the way timers are parsed
- Now stores the nick that created the timer
- All Private Messages sent to zomg are now forwarded to vsTerminus
Version 0.6.7 – April 1st 2009
- Added .whisperback
- Added !mp3
- Fixed Modelock
- Added some extra protection against XML db corruption
- Added !spamfilter
- Added .kickban for opers
- Added a mode parser
- No longer need to /who the channel on mode changes!
- Help file updates
- Moved to an HTML format
- Hosted on my machine instead of omploader
Version 0.6.6 – March 2nd 2009
- Added .addchan
- Added !announce
- Very different from announce in the old zomg
- Added logging
- One file per channel
- Command log
- Kick log
- Added an option to !who
- !who <banned|kicked> <user>
- Fixed to-do list saving.
- Added !autobans
- Added !capsban
- Added !spamban
- Added !repeatban
- Fixed some warnings in on_text and parseCommand subs
- Improved command handling and multi-command handling
Version 0.6.5 – February 27th 2009
- Modified topic template
- Fixed topic tracking for topics set by other users
- Added command aliases, definable by opers
- .addcmd <New Command> <Existing Target Command>
- .delcmd <Command Alias>
- .listcmd <Command Alias | Command>
- Removed the 'did you mean' responses, they were just annoying and cropping up too often
- Added more options to .stats
- .stats users|kicks|text|peak|defs
Version 0.6.4 – February 23rd 2009
- Added comical 'did you mean' on invalid commands
- Added protection to !stfu to stop it from accepting empty args
- Upgraded the multi-command parsing to be more intuitive
- 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).
- eg. !stfu Xyzzy; Scissors, Pie
- 'who is defined' now lists users for opers.
- Topic text is now filtered when stored to prevent XML errors.
- Added .todo
- Added .done
- Fixed another glitch with nick changes
- Bot will no longer attempt to parse blank commands during multi-parsing
- Fixed problem with 'who/what is defined' not splitting lists into multiple messages
- Added option 'list' for the oper join command.
- Added !peak
- Also added oper .peak
- Added peak info to .stats
- Stats by default uses a compressed, one-message format
- Optionally, user can pass 'v' or 'verbose' to get the full, multi-line version with additional info.
- Fixed regex for special 'who is' and 'what is' commands
- Added oper .help which allows sending to other users (also massable)
- Fixed a check in the mass command
Version 0.6.3 – February 11th 2009
- Added !kickcount
- Added !kickme
- Added two new hashes
- %kicks # Stores info on all kicks seen
- %mykicks # Stores info on kicks by the bot
- Fixed tracking of hostmasks on nick changes
- Added more info to stats
- Fixed glitch in the mass command where it wasn't checking the opers hash
- Reset the kick counter in favor of having accurate kick data
Version 0.6.2 – February 11th 2009
- Removed !addban
- Added a %hosts hash to keep the hosts for users seperate from the user objects
- This makes it easier to track whether a user is online or offline
- Adjusted !whois output to reflect offline users
- Added .stats
- Adjusted on_quit and on_part events
- Changed !help to send a NOTICE instead of a PM
Version 0.6.1 – February 10th 2009
- Added .say
- Added !cycle
- Added !rr
- Added !nn
- Added !censor
- Added !mute
- Added !strip
- Added support to catch SIG{TERM} and SIG{INT} and save before exiting
Version 0.6.0 – February 10th 2009 (Initial Release)
- Why start at 0.6.0?
*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.
- 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.
Last modified 14 years ago
Last modified on Dec 6, 2010, 6:50:48 AM