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