]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blob - ChangeLog
Sun Aug 07 15:11:07 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
[user/henk/code/ruby/rbot.git] / ChangeLog
1 Sun Aug 07 15:11:07 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
2
3   * fix address_prefix, broken in 0.9.9, reported by ruskie.
4
5 Sat Aug 06 00:54:34 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
6
7   * Released 0.9.9
8
9 Fri Aug 05 23:55:20 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
10
11   * few more tweaks preparing to release 0.9.9
12
13 Thu Aug 04 23:03:30 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
14
15   * Improved ircd recognition of rfc2812.rb
16         * de-string'd, de-cap'd rfc2812.rb, looks less shouty now
17         * moved the Q auth stuff (for quakenet) into a new qauth plugin (untested!)
18         * finish fixing the httputil
19
20 Thu Aug 04 00:11:52 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
21
22   * Tweaked the debug() stuff a bit. Need to do this more cleanly really
23         * Added a fair bit of documentation for some of the new features
24
25 Wed Aug 03 15:25:07 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
26
27   * Added french language file (TODO most of the plugins just talk english)
28         * The way the Enum configs were set up, it wasn't possible to add language
29         files to rbot at runtime (the directory was only scanned at startup). Now
30         you can set a values Proc, which is called to return a list of allowed
31         values whenever it's queried.
32         * Added Config module for determining where we were installed.
33         Unfortunately rubygems is a total whore in this regard, and I hope the
34         current hackery I have to do to support it becomes redundant in the
35         future.
36
37 Wed Aug 03 00:31:41 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
38
39   * Added Rakefile, tweaked gemspec
40
41 Tue Aug 02 16:27:36 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
42
43   * Fixed the new http.proxy* settings, they work!
44         * Fixed a bug with auth-checking for the config module
45         * misc tweaks
46
47 Sun Jul 31 02:20:08 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
48
49   * Updated docgen to generate rdoc again with the new repo structure
50         * added new restart command to the core bot, quits irc and reexecs the
51         bot, to pick up new code/libraries etc.
52
53 Sat Jul 30 22:33:36 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
54
55   * Config items are now objects, various types are available.
56         * The config wizard will now use registered config items if :wizard is set
57     to true for those items. It will ask questions in the order they were
58                 registered.
59         * The config module now works for doing runtime configuration.
60         * misc refactoring
61
62 Sat Jul 30 01:19:32 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
63
64   * config module for configuring the running bot via IRC
65         * BotConfig.register method for various modules and any plugin to register
66         bot configuration which the new config module will expose for them.
67         * various other tweaks as I continue to refactor..
68
69 Fri Jul 29 13:07:56 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
70
71   * Moved some stuff out of util.rb into the plugins that actually need
72         them. Those methods didn't belong in util as they were plugin-specific.
73         * moved a few more plugins to use map() where appropriate
74         * made the url plugin only store unique urls
75
76 Thu Jul 28 23:45:26 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
77
78   * Reworked the Timer module. The Timer now has a smart thread manager to
79         start/stop the tick() thread. This means the timer isn't called every 0.1
80         seconds to see what needs doing, which is much more efficient
81   * reworked the ircsocket queue mechanism to use a Timer
82         * reworked the nickserv plugin to use maps
83         * made server.reconnect_wait configurable
84         * added Class tracing mechanism to bin/rbot, use --trace Classname for
85         debugging
86
87 Tue Jul 26 14:41:34 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
88
89   * Prevent multiple plugin registrations of the same name
90         * reworking the config system to use yaml for persistence
91         * reworking the config system key names
92         * on first startup, the bot will prompt for the essential startup config
93         * new config module for configuring the bot at runtime
94         * new config module includes new configurables, for example changing the
95         bot's language at runtime.
96         * various other fixes
97         * New way of mapping plugins to strings, using maps. These may be
98         familiar to rails users. This is to reduce the amount of regexps plugins
99         currently need to do to parse arguments. The old method (privmsg) is still
100         supported, of course. Example plugin now:
101           def MyPlugin < Plugin
102                   def foo(m, params)
103                           m.reply "bar"
104                         end
105
106                         def complexfoo(m, params)
107                           m.reply "qux! (#{params[:bar]} #{params[:baz]})"
108                         end
109                 end
110                 plugin = MyPlugin.new
111                 # simple map
112                 plugin.map 'foo'
113
114     # this will match "rbot: foo somestring otherstring" and pass the
115                 # parameters as a hash using the names in the map.
116                 plugin.map 'foo :bar :baz', :action => 'complexfoo'
117                 # this means :foo is an optional parameter
118                 plugin.map 'foo :foo', :defaults => {:foo => 'bar'}
119     # you can also gobble up into an array
120                 plugin.map 'foo *bar' # params[:bar] will be an array of string elements
121     # and you can validate, here the first param must be a number
122                 plugin.map 'foo :bar', :requirements => {:foo => /^\d+$/}
123
124
125 Sat Jul 23 01:39:08 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
126
127   * Changed BotConfig to use yaml storage, method syntax instead of hash for
128         get/set, to allow more flexibility and encapsulation
129         * Added convenience method Message.okay (m.okay is the same as the
130         old-style @bot.okay m.replyto)
131
132 Wed Jul 20 23:30:01 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
133
134   * Move some core plugins to use the new httputil
135         * fix wserver's redirection handling for relative (i.e. broken) redirects
136         * fix tube plugin's html parsing
137
138 Wed Jul 20 01:18:06 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
139
140         * Add new httputil object to the bot object, to be used by plugins etc
141         that wish to make http requests. It sets up all the proxies etc for them
142         according to bot config.
143
144 Sat Jul 16 02:23:13 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
145
146   * Apply most of Rene's patch and fix various plugins.
147         * New plugin: autoop (auto ops via hostmask)
148         * New feature: karmastats
149
150 Wed Oct 13 16:16:31 BST 2004  Tom Gilbert <tom@linuxbrit.co.uk>
151
152   * Fix bug with quotes plugin where it gets confused and sees both a quote
153   and a keyword, both plugins are triggered by, for example "addquote foo is
154   bar"
155   * fixed this by implementing the "has_responded" flag on a message. When a
156   plugin replied to a message (or it manually sets m.replied to true), the
157   keywords plugin will honour that flag and not examine the message for
158   keywords. This flag can also be checked by listen plugins that don't want to
159   interfere with other plugin commands.
160
161 Mon Oct 11 00:37:52 BST 2004  Tom Gilbert <tom@linuxbrit.co.uk>
162
163   * Fixes to the NickServ plugin
164
165 Sat Oct 09 23:23:24 BST 2004  Tom Gilbert <tom@linuxbrit.co.uk>
166
167   * Keyword searching
168
169 Fri Oct 08 00:40:07 BST 2004  Tom Gilbert <tom@linuxbrit.co.uk>
170
171   * fixed insult plugin
172   * fixed excuse plugin
173
174 Thu Oct 07 23:28:05 BST 2004  Tom Gilbert <tom@linuxbrit.co.uk>
175
176   * searching for urls in the url plugin
177   * roshambo (rock/paper/scissors) plugin from Hans Fugal <hans@fugal.net>
178
179 Sat Apr 17 20:56:50 BST 2004  Tom Gilbert <tom@linuxbrit.co.uk>
180
181   * Oh, found new tv plugin in my inbox from ages ago, but it's still not
182   working so I guess it changed again since then
183   * New eightball plugin from Daniel Free
184
185 Sat Apr 17 20:44:43 BST 2004  Tom Gilbert <tom@linuxbrit.co.uk>
186
187   * Fixed the babelfish parser so translate works again.
188   * Misc other fixes
189   * Note some plugins are broken (excuse,insult) because the server they use
190     went away. I don't know of a replacement right now.
191   * tv plugin seems broken, perhaps the html changed.
192
193 Thu Jan 15 21:37:38 GMT 2004  Tom Gilbert <tom@linuxbrit.co.uk>
194
195   * Fixes for ruby 1.8
196
197 0.9.8
198 * new plugin from Alan Third <alan@idiocy.org>, allows you to search and list
199   UK TV programmes.
200
201 0.9.7
202 * various plugin updates
203 * fix (again) for C to F temp conversion in weather plugin
204 * channel topic patch from Peter Suschlik, gives plugin better access to topic
205   changes and related information
206
207 0.9.6
208 * changes to layout of slashdot plugin output
209 * freshmeat plugin, show latest updates or search
210 * fix to C to F temp conversion in weather plugin
211 * status command returns some bot status
212 * fortune plugin
213 * using BDB::Btree everywhere now, instead of BDB::Hash, because the Btree api
214   allows me to set my own key comparison function. This is needed to keep
215   supporting case insensitivity (vital for IRC), which was sadly broken in
216   0.9.5 :( All existing dbs will be upgraded automatically.
217 * roulette plugin - play russian roulette :) also keeps game stats.
218 * new config option, NO_KEYWORD_ADDRESS. If set to "true", the bot will always
219   respond to keywords it knows even when not addressed and the message doesn't
220   start with '. Message must end with "?" however.
221 * hopefully fixed welcome message parsing from certain server types
222
223 0.9.5
224 * plugin object registry
225   This provides persistant storage for plugins via a hash interface. The
226   default mode is an object store, so you can store ruby objects and reference
227   them with hash keys. This is because the default store/restore methods of
228   the plugins' RegistryAccessor are calls to Marshal.dump and Marshal.restore,
229   for example:
230     blah = Hash.new
231     blah[:foo] = "fum"
232     @registry[:blah] = blah
233   then, even after the bot is shut down and disconnected, on the next run you
234   can access the blah object as it was, with:
235     blah = @registry[:blah]
236   The registry can of course be used to store simple strings, fixnums, etc as
237   well, and should be useful to store or cache plugin data or dynamic plugin
238   configuration. 
239
240   If you don't need to store objects, and strictly want a persistant hash of
241   strings, you can override the store/restore methods to suit your needs, for
242   example (in your plugin):
243     def initialize
244       class << @registry
245         def store(val)
246           val
247         end
248         def restore(val)
249           val
250         end
251       end
252     end
253   Your plugins section of the registry is private, it has its own namespace
254   (derived from the plugin's class name, so change it and lose your data).
255   Calls to registry.each etc, will only iterate over your namespace.
256
257   The nickserv and karma plugins use the new registry and should serve as a
258   useful example. Basic usage of the registry is simple, just treat it as a
259   hash, with values that never die (unless you delete() them).
260 * Change to the nickserv plugin. The old method of putting the nickserv
261   password in rbot.conf was useless for multiple nicks or easy updates. The
262   plugin now uses the plugin registry to store passwords for any nicks it
263   owns. The plugin can be told to register the current nick (supply a password
264   or it'll generate one), identify for the current nick (if the password is
265   known), and can be told the passwords for other nicks. If NickServ asks the
266   bot to identify, it will automatically do so if it knows the appropriate
267   password.
268 * karma plugin now uses the plugin registry, it should automatically import
269   your existing, stored karma data into the registry.
270 * The babelfish plugin now caches results in the bot registry to speed up
271   common lookups.
272 * New message types and plugin methods to grab them,
273   quit(QuitMessage):   Called when a user (or the bot) quits IRC
274   nick(NickMessage):   Called when a user (or the bot) changes Nick
275   topic(TopicMessage): Called when a user (or the bot) changes a channel topic
276 * A plugin's listen() method will now receive any kind of Message, e.g.
277   PrivMessage, NoticeMessage, NickMessage, JoinMessage, etc
278 * New plugins:
279   seen: the usual "seen" stuff: 
280         rbot: seen giblet?
281         giblet was last seen xxx ago doing xxx
282   cal:  calls the unix cal program to display a calendar
283   math: evaluates mathematical expressions:
284         rbot: math 2+2
285         rbot: math 4 to the power of 8
286         rbot: math ((232+432) - 4) / 2
287         (ported from infobot. Thanks to Kevin Lenzo, who wrote the
288         original infobot math module)
289   slashdot: displays latest headlines or searches for articles
290   url:  stores urls mentioned in channels for regurgitation later
291   weather: grabs and parses METAR weather data, will remember the last weather
292            code you asked for so you don't have to :)
293 * New utility function, Util.http_get(url) for getting remote data via http,
294   just dumps response.body into a string and returns it, or nil if anything at
295   all goes wrong. Useful for simple plugins.
296 * random quit messages if none specified, messages set in language description
297   file
298 * keywords are now stored in bdb databases - your old keywords.rbot will be
299   imported. Static keywords (fact packs) are also stored in bdb databases, and
300   rbot will automatically convert any text .fact file dropped in the confdir's
301   keywords subdirectory, at startup, into a bdb file. If both a db and a text
302   file exist of the same name (except the extension), the text file will be
303   imported and merged into the database.
304   static keywords will be looked up in each factpack db in turn, in
305   alphabetical filename order - so you can prioritise using the filename if
306   you wish.
307 * fixed a bug with autsplitting long sent lines, the last line was often being
308   split unnecessarily.
309
310 0.9.4
311 * Massive cleanup of rfc2812.rb, contributed by Lars Christensen
312   <dsl8950@vip.cybercity.dk>, gets rid of a lot of regexps
313 * Fixed bug reading static keyword files - "foo <=is=> bar" may not have
314   worked for a couple of releases, only "foo<=is=>bar" was working - this was
315   not intended and should be fixed now
316 * Experimental send queue, to prevent the bot from flooding out, the delay
317   between sending messages to the server defaults to 2s, but is configurable
318   in conf.rbot, set SENDQ_DELAY (0 to disable queueing). You can also set/get
319   the value from the bot, "rbot: options get sendq_delay", and 
320   "rbot: options set sendq_delay 1.5", if you have sufficient auth for "config"
321   This is a bursting sendq, most ircd's allow bursts of up to 5
322   lines, with non-burst limits of 512 bytes/2 seconds. To set the burst limit,
323   configure SENDQ_BURST in conf.rbot, or do the same kind of stuff with
324   "rbot: options set sendq_burst 2", etc.
325   The defaults are 2s/4 burst, which seem to work okay for me.
326 * support for multiple, customisable, addressing prefixes. Set ADDRESS_PREFIX
327   in conf.rbot to a space separate list of addressing prefixes, e.g
328   ADDRESS_PREFIX = | ! =>
329   Would mean that all of the following in channel messages would cause the bot
330   to respond:
331               rbot: version
332               |version
333               !version
334               =>version
335 * bb plugin removed, bb is nearly over and it doesn't work 100% anyway
336 * Two plugins from brailsmt (from #ruby-lang on openprojects), a stats plugin
337   which monitors usage of 1-word sentences, and lart, which allows you to ask
338   rbot to lart people - with an optional reason - larts are user-definable and
339   can be added on the fly.
340 * made google.rb work for people with 1.6 ruby's net/http
341
342 0.9.3
343
344 * fix quit messages
345 * new plugin for handling nickserv-protected nicks, use NICKSERV_PASSWORD in
346   the config file.
347 * fixes to a few other buglets
348 * new plugin to grab bigbrother headlines, still buggy and only useful for UK
349   folks who love bb :-)
350 * fixes to various plugins
351 * Patch from akira yamada <akira@ruby-lang.org>
352   DNS plugin: Use resolv-replace if found, do lookup in new thread
353   Fix bug joining channels with keys
354
355 0.9.2
356
357 * better "connect failure" error message
358 * better option parsing, and --debug option
359 * access to bot's online help via commandline, eg:
360   ./rbot.rb --help
361   ./rbot.rb --help core
362   ./rbot.rb --help "core save"
363 * Fix broken help from last point release
364 * Plugin API modification and cleanup. You no longer need to set @listen to
365   true in order to get all NOTICE and PRIVMSGs, you just need to define the
366   method. The method is now called listen(), renamed from listener(). This
367   should be the last time the plugin api is changed incompatibly.
368 * New plugin method kick(). Use it to see kicks (duh :))
369 * New plugin methods join(), part(). Obvious uses.
370 * Example plugin autorejoin.rb, uses kick event to rejoin channel and insult
371   kicker
372 * fix bug in remind plugins "remind me no more" recognition.
373
374 0.9.1
375
376 * Fix welcome message recognition for certain IRCd's.
377
378 0.9
379
380 * Allow keyword definitions which end in '?', like this:
381   bot: foo is bar\?
382 * rdoc documentation!
383 * fixed broken address regexp, "rbot: .foo" was being treated as an addressed
384   form of "foo" (lost the .)
385 * fix stupid bug in last release (looking for wrong default conf dir)
386
387 0.8
388
389 * Tarball layout change. modules all in rbot/ now, and the rbot/ default
390   configuration moved to rbotconf/. This lets the thing run from an unpacked
391   tarball while also being ready to run with the modules installed somewhere
392   else.
393 * change hashbang to /usr/bin/env ruby, in order to use PATH looking for ruby,
394   it's BSD friendly!
395 * allow "botnick : foo" style addressing, and even "botnick... foo"
396 * slap plugin (contributed by oct)
397 * renamed bot.send to bot.sendmsg, I didn't really want to override send() ;D
398   (thanks Kero)
399
400 0.7.1
401 * Made sane for packagers. Looks in the right places for plugins and language
402   files now, so extra effort shouldn't be needed there.
403
404 0.7
405
406 * Fixed "nick taken on join" bug
407 * Dice plugin patch from David Dorward
408 * fix searchquote regexp
409 * conf.rbot: PASSWORD -> SERVER_PASSWORD, to prevent confusion with PASSWD,
410   which is for master auth.
411
412 0.6
413
414 * Fixed addquote (was incrementing quote ID twice)
415 * now strips colour/bold escapes from incoming messages (rbot was ignoring
416   messages addressed using a bolded colon, for example).
417 * minor bugfixes
418 * more language breadth
419 * Addressing works better now
420 * Can autojoin channels with keys, conf.rbot line is:
421   autojoin_channels #chan1, #chan2, #chan3 key, #chan4 key, #chan5
422 * dice plugin fixes
423
424 0.5
425
426 * Initial release