Project WatchBot
From Snowulf
Contents |
Intro
Problem
The basic "problem" is this: If you work on a Wiki(m|p)edia project you probably have a ton of items on your "Watch List" and the only way to keep up with those changes is to load up the Watch list page and hit F5 every 2 minutes. This is inefficient and frankly silly...
Goal
The "goal": To have an IRC bot send a private message every time a change is made to a page you care about.
How
"How": The Wikimedia foundation runs a series of IRC chat rooms with a bot in each one. The bot prints out a line (into the room) every time a change is made. Generally they look like this: " [[User:ShakataGaNai/Sandbox]] http://commons.wikimedia.org/w/index.php?title=User:ShakataGaNai/Sandbox&diff=11877490&oldid=11877430 * ShakataGaNai * (+34) new test ". I grabbed a php based IRC bot and hacked together a rinky dink module that looks for certain text strings (as defined in a text file) and IM's myself with the line of text.
Scaling up
Basically what I've got now will work for a very small scale for myself, as it does a foreach() on the text string array every time a message is received and is hardcoded it IM me. Obviously this wont scale. I want to make it Database powered with the ability to have hundreds if not thousands of pages to "watch" and preferably multi user capable.
Moving on
Basic Features
- Watch WMF provided IRC feeds
- privmsg user when their page gets edited
Adv Features
- Database powered
- Multi user support
- Ability to run hundreds to thousands of watched pages w/o bogging down server too badly.
- User turn on/off updates
- User add/remove pages
- Cross Server messages [1]
- Rate limiting of Privmessages. Possibly user settable - definitely need hard limit though.
- Needs to be able to gracefully handle nick changes and user not being online.
Would be cool Features
- Ability to login as specific user & fetch raw watchlist
- Interact w/ the wiki's somehow.
- Regex support for page names.
- Support for Watching specific information. IE: Watching all edits by specific user, versus edits to a page, or certain text in the edit summary.