| 1 |
2007-04-12 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 2 |
|
|---|
| 3 |
* Basic class extensions: Module#define_structure() method. Syntax: |
|---|
| 4 |
define_structure :SomeName, :attr_a, :attr_b |
|---|
| 5 |
is equivalent to |
|---|
| 6 |
SomeName = Struct.new("SomeName", :attr_a, :attr_b) |
|---|
| 7 |
except that the new Struct is not created if it already exists and the |
|---|
| 8 |
attributes list is the same. |
|---|
| 9 |
|
|---|
| 10 |
2007-03-31 Dmitry Kim <dmitry.kim@gmail.com> |
|---|
| 11 |
|
|---|
| 12 |
* HttpUtil: major rework. get_response() method now respects |
|---|
| 13 |
caching (can be turned off via options) and supports different HTTP |
|---|
| 14 |
methods (GET (default), HEAD and POST) and ranged requests. get() and |
|---|
| 15 |
head() methods are now just a thin wrappers around get_request(). |
|---|
| 16 |
Semantics for user-supplied &block has been made consistent across |
|---|
| 17 |
these methods. |
|---|
| 18 |
* HttpUtil: get_cached() method has been removed (obsoleted by new |
|---|
| 19 |
get()). post() method has been added. get_partial() method for ranged |
|---|
| 20 |
requests has been added. Net::HTTPResponse partial_body() method has |
|---|
| 21 |
been removed (mostly because it won't play well with future HTTP |
|---|
| 22 |
encodings support), please use get_partial() or get_request() instead. |
|---|
| 23 |
* Utils: http_get() method has been removed (long obsoleted by |
|---|
| 24 |
HttpUtil) |
|---|
| 25 |
* different plugins: modified to accomodate for HttpUtil changes. |
|---|
| 26 |
|
|---|
| 27 |
2007-03-24 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 28 |
|
|---|
| 29 |
* HttpUtil: new get_response method to follow redirects and get an |
|---|
| 30 |
Net::HTTPResponse object with an open connection, allowing partial |
|---|
| 31 |
body retrieval. |
|---|
| 32 |
* HttpUtil: extend Net::HTTPResponse with a #partial_body() method. The |
|---|
| 33 |
method take an argument (max bytes to download) and an optional block; |
|---|
| 34 |
the method yields all the partial content that it's being downloaded, |
|---|
| 35 |
instead of the single chunks yield by #read_body(). |
|---|
| 36 |
* url plugin: use the new HttpUtil methods. |
|---|
| 37 |
* url plugin: do not block while trying to get link info. |
|---|
| 38 |
|
|---|
| 39 |
2007-03-14 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 40 |
|
|---|
| 41 |
* Socket filtering: socket data, both input and output, can now be |
|---|
| 42 |
filtered. This is used for example to transcode all input and output |
|---|
| 43 |
so that messages are internally managed as UTF-8. By default, the bot |
|---|
| 44 |
will try cp1252 (Windows Western European) encoding for non-UTF-8 |
|---|
| 45 |
strings. Thanks to jsn (Dmitry Kim <dmitry.kim@gmail.com>). |
|---|
| 46 |
|
|---|
| 47 |
2007-03-10 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 48 |
|
|---|
| 49 |
* IRC settings: ability to change the IRC name for the bot. Thanks to |
|---|
| 50 |
jsn (Dmitry Kim <dmitry.kim@gmail.com>). |
|---|
| 51 |
* Plugin: allow customization of the plugin load path. Thanks to |
|---|
| 52 |
jsn (Dmitry Kim <dmitry.kim@gmail.com>). |
|---|
| 53 |
|
|---|
| 54 |
2007-02-20 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 55 |
|
|---|
| 56 |
* Timers: failing timer actions don't prevent the global timer ticker |
|---|
| 57 |
from functioning properly. |
|---|
| 58 |
* Shiritori plugin: new word game, contributed by Yaohan Chen |
|---|
| 59 |
<yaohan.chen@gmail.com>. People take turns to continue a chain of |
|---|
| 60 |
words by saying words that begin with the final letter(s) of the |
|---|
| 61 |
previous word. |
|---|
| 62 |
* IRC messages are not UTF-8: Most of the string processing across |
|---|
| 63 |
rbot is done against IRC messages, which do not have a well-defined |
|---|
| 64 |
encoding. Although many clients are now using UTF-8, there is no |
|---|
| 65 |
guarantee that an arbitrary string received from IRC will be UTF-8 |
|---|
| 66 |
encoded. We have to force ASCII (byte-wise/charset agnostic) matching |
|---|
| 67 |
because otherwise some strings can give problems: in particular, for |
|---|
| 68 |
example, the bytesequence "\340\350\354\362\371" (that is the aeiou |
|---|
| 69 |
vowels, each with a grave accent) will cause the string to be |
|---|
| 70 |
considered up to the "\354" (i with grave accent) only: so either the |
|---|
| 71 |
rest of the message is ignored, or the matching fails. |
|---|
| 72 |
|
|---|
| 73 |
2007-02-18 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 74 |
|
|---|
| 75 |
* Plugin: Provide a plugin.header file with boilerplate plugin |
|---|
| 76 |
title/author/copyright/license information. Authors of new plugins are |
|---|
| 77 |
encouraged to use it. Many existing plugins have been changed to |
|---|
| 78 |
follow the same spec. |
|---|
| 79 |
* NickServ plugin: delegate #identified() to other plugins after |
|---|
| 80 |
successfull identification. Also provide #identified?() method to test |
|---|
| 81 |
if the bot has successfully identified. Not perfect yet (gets reset |
|---|
| 82 |
after a rescan.) |
|---|
| 83 |
|
|---|
| 84 |
2007-02-15 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 85 |
|
|---|
| 86 |
* Plugin: new unreplied() method to handle PRIVMSGs which have not |
|---|
| 87 |
been replied to. |
|---|
| 88 |
* Regexp: more regexp madness. BasicUserMessage and derivate classes |
|---|
| 89 |
now have a new method parse_channel_list() to parse list of channel |
|---|
| 90 |
names. |
|---|
| 91 |
|
|---|
| 92 |
2007-02-12 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 93 |
|
|---|
| 94 |
* Remote Service Provider: from an idea by halorgium <rbot@spork.in>, |
|---|
| 95 |
initial steps towards a DRb-based remote service provider for rbot. |
|---|
| 96 |
When complete, it will give plugins the ability to listen to |
|---|
| 97 |
'messages' from remote clients connected to the bot, allowing for such |
|---|
| 98 |
things as svn notification without RSS polling, remote control of |
|---|
| 99 |
the bot, or even (why not?) botnets. |
|---|
| 100 |
* Remote Service Provider: BotModules can now include the |
|---|
| 101 |
RemoteBotModule interface that provides them with the remote_map() |
|---|
| 102 |
method that works just like the map() method, but for remote commands |
|---|
| 103 |
* Remote Service Provider: Remote clients can now login remotely |
|---|
| 104 |
before executing commands. This in fact integrates the remote access |
|---|
| 105 |
auth security with the User/BotUser used on IRC itself. |
|---|
| 106 |
|
|---|
| 107 |
2007-02-08 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 108 |
|
|---|
| 109 |
* Languages: Japanese support with language files, salutations, larts |
|---|
| 110 |
and praises, thanks to hagabaka (Yaohan Chen <yaohan.chen@gmail.com>) |
|---|
| 111 |
|
|---|
| 112 |
2007-02-05 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 113 |
|
|---|
| 114 |
* sendmsg improvements: the bot sendmsg() method and all the methods |
|---|
| 115 |
that rely on it (say(), notice(), and message methods such as reply()) |
|---|
| 116 |
now accept an option hash to customize its behaviour. |
|---|
| 117 |
* :newlines, which can be set to either :split or :join, |
|---|
| 118 |
depending on whether newlines in messages should be used as |
|---|
| 119 |
split-points, or should be be replaced by some string (defined |
|---|
| 120 |
in the :join_with option) |
|---|
| 121 |
* :max_lines, which determines the maximum number of lines to be |
|---|
| 122 |
sent by each messages. Last line is truncated (see next |
|---|
| 123 |
options). Set to nil to have no limits. |
|---|
| 124 |
* :overlong, which determines the behaviour when overlong lines |
|---|
| 125 |
are to be sent; possible values are :split or :truncate. |
|---|
| 126 |
* If :overlong is set to :split, :split_at determines the |
|---|
| 127 |
string/regexp to split at; default is /\s+/, other usual |
|---|
| 128 |
choice could be /\s+\|\s+/. |
|---|
| 129 |
* If :overlong is set to :split, the :purge_split option |
|---|
| 130 |
determines whether the :split_at expression should be removed |
|---|
| 131 |
from the next lines (defaults to true). |
|---|
| 132 |
* If :overlong is set to :truncate, the value of the option |
|---|
| 133 |
:truncate_text is replaced at the end of the truncated line |
|---|
| 134 |
* LinkBot plugin: initial commit of a plugin to handle messages from |
|---|
| 135 |
eggdrops and other bots that act as cross-network channel links. |
|---|
| 136 |
Suggested by hagabaka (Yaohan Chen <yaohan.chen@gmail.com>) |
|---|
| 137 |
|
|---|
| 138 |
|
|---|
| 139 |
2007-02-03 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 140 |
|
|---|
| 141 |
* Plugin message mapper: Enhancements to the :requirements option. |
|---|
| 142 |
When the requirement of a parameter is a regular expression with |
|---|
| 143 |
capturing groups /(...)/, the corresponding map parameters will be |
|---|
| 144 |
assigned (by default) the first non-nil capture instead of the whole |
|---|
| 145 |
regular expression. If a specific capture group is desired instead, |
|---|
| 146 |
the requirement should be in the form |
|---|
| 147 |
[/some regexp/, integer_index_of_the_desired_group] |
|---|
| 148 |
or in the form |
|---|
| 149 |
{ |
|---|
| 150 |
:regexp => /some regexp/, |
|---|
| 151 |
:index => integer_index_of_the_desired_group |
|---|
| 152 |
} |
|---|
| 153 |
and a nil index will still give the default behavior. |
|---|
| 154 |
If you want the whole regular expression to be the matched parameter |
|---|
| 155 |
value, there are three options: use an index of 0, wrap the whole |
|---|
| 156 |
regular expression in a capturing group, or use non-capturing groups |
|---|
| 157 |
/(?:...)/. The latter is preferred because it's much faster. |
|---|
| 158 |
When exploiting the capturing groups feature, please try to remember |
|---|
| 159 |
to use /\s+/ instead of plain spaces / /, unless it's absolutely |
|---|
| 160 |
necessary to have single spaces. |
|---|
| 161 |
|
|---|
| 162 |
2007-02-02 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 163 |
|
|---|
| 164 |
* Plugin message mapper: Requirements (as set by the :requirements |
|---|
| 165 |
hash) are now embedded in the regular expression matcher rather than |
|---|
| 166 |
being cheked separately afterwards. |
|---|
| 167 |
|
|---|
| 168 |
2007-01-30 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 169 |
|
|---|
| 170 |
* New IRC Framework: Server methods to retrieve a Channel or User are |
|---|
| 171 |
now more robust to empty or nil nicks and channel names passed as |
|---|
| 172 |
parameters. |
|---|
| 173 |
|
|---|
| 174 |
2007-01-29 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 175 |
|
|---|
| 176 |
* Timer rescheduling: it is now possible to reschedule the period |
|---|
| 177 |
any particular Action is taken by issuing the command |
|---|
| 178 |
@bot.timer.reschedule(handle, new_period) |
|---|
| 179 |
where +handle+ is a timer handle returned by the @bot.timer.add() that |
|---|
| 180 |
created the action, and new_period is the new period for the Action. |
|---|
| 181 |
|
|---|
| 182 |
2007-01-23 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 183 |
|
|---|
| 184 |
* Reduced saving: the salut, lart, and quotes plugin now only save |
|---|
| 185 |
their datafiles if anything changed since last time. This speeds up |
|---|
| 186 |
operations such as saving and rescanning; it also allow hand-editing |
|---|
| 187 |
of the data files while the bot is running, since a rescan will load |
|---|
| 188 |
the changed data files without overwriting them with a useless save |
|---|
| 189 |
before. Of course this only works if there are no pending changes in |
|---|
| 190 |
the running bot. |
|---|
| 191 |
|
|---|
| 192 |
2007-01-12 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 193 |
|
|---|
| 194 |
* Server timeout: rework the server timeout code. Instead of PINGing |
|---|
| 195 |
the server unconditionally every server.ping_timeout seconds, we only |
|---|
| 196 |
PING it if we don't receive anything in the user-chosen timeout (lazy |
|---|
| 197 |
PING). The code rewrite also seems to have fixed the "bot stalling |
|---|
| 198 |
doing nothing" problem, which seemed to have been a consequence of |
|---|
| 199 |
@socket.select not having a timeout. |
|---|
| 200 |
|
|---|
| 201 |
2006-11-01 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 202 |
|
|---|
| 203 |
* SSL support: patch from Robin H. Johnson <robbat2@gentoo.org> |
|---|
| 204 |
|
|---|
| 205 |
2006-10-28 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 206 |
|
|---|
| 207 |
* A-Z game: try to guess the word the bot is thinking of: every miss |
|---|
| 208 |
helps by reducing the range of allowed words, until it's so small |
|---|
| 209 |
around the correct one that you can't miss it. |
|---|
| 210 |
|
|---|
| 211 |
2006-10-27 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 212 |
|
|---|
| 213 |
* Flood protection: first attempt at penalty-based flood protection. |
|---|
| 214 |
This should make rbot much less prone to Excess Floods *and* still |
|---|
| 215 |
serve normally without excessive delays. |
|---|
| 216 |
|
|---|
| 217 |
2006-10-25 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 218 |
|
|---|
| 219 |
* HttpUtil: Strings returned by get_cached now have a cached? method |
|---|
| 220 |
which returns true or false depending on whether the result was taken |
|---|
| 221 |
from the cache or not; this can be exploited by plugins that parse the |
|---|
| 222 |
result in some particular way, since they can now skip the parsing |
|---|
| 223 |
stage if they cache the parse result. |
|---|
| 224 |
|
|---|
| 225 |
2006-10-24 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 226 |
|
|---|
| 227 |
* HttpUtil: initial implementation of proper caching based on |
|---|
| 228 |
last-modified and etag HTTP headers |
|---|
| 229 |
|
|---|
| 230 |
2006-10-17 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 231 |
|
|---|
| 232 |
* Salut plugin: handles (multilingual) salutations (hello/goodbye) |
|---|
| 233 |
|
|---|
| 234 |
2006-10-15 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 235 |
|
|---|
| 236 |
* Language stuff: plugins can now handle language changes in a natural |
|---|
| 237 |
fashion. lart is the first plugin to make use of this. NOTE: this |
|---|
| 238 |
is not (yet) backwards compatible: the old larts/praises files from |
|---|
| 239 |
previous rbot setups have to be renamed manually |
|---|
| 240 |
* Language stuff: italian translations |
|---|
| 241 |
* Utils.safe_save(filename): allows 'safe' saving of a file: it needs a |
|---|
| 242 |
block, to which it will yield a temporary file on which operations can |
|---|
| 243 |
be carried out. When the block returns, the tempfile will be renamed to |
|---|
| 244 |
the given filename |
|---|
| 245 |
|
|---|
| 246 |
2006-09-21 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 247 |
|
|---|
| 248 |
* New Auth Framework: restore backwards compatibility: 'auth |
|---|
| 249 |
<masterpassword>' and 'login owner <masterpassword>' both work. |
|---|
| 250 |
* Topic plugin: cleanups. Implement 'topic undo'. 'topic undo' after a |
|---|
| 251 |
'topic undo' undoes the last undo. |
|---|
| 252 |
|
|---|
| 253 |
2006-09-09 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 254 |
|
|---|
| 255 |
* New Auth Framework: rbot was opping anyone who asked for it (opme |
|---|
| 256 |
plugin). Fixed, and cleaned up. |
|---|
| 257 |
|
|---|
| 258 |
2006-09-01 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 259 |
|
|---|
| 260 |
* New Auth Framework: document and fine tune permissions view the auth |
|---|
| 261 |
core botmodule. |
|---|
| 262 |
* Version: when run from a svn checkout, the bot now tries to report |
|---|
| 263 |
which svn revision it's at, and if there are local changes |
|---|
| 264 |
|
|---|
| 265 |
2006-08-31 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 266 |
|
|---|
| 267 |
* Nickserv plugin: bot will now try to inform nickserv when password |
|---|
| 268 |
is changed. Moreover it's not necessary to specify the nick anymore if |
|---|
| 269 |
you want to change the password for the current bot nick. Also do some |
|---|
| 270 |
internal cleanups while we're at it. |
|---|
| 271 |
|
|---|
| 272 |
2006-08-29 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 273 |
|
|---|
| 274 |
* Script plugin: new (UNSAFE!) echo functions. Just like eval, but |
|---|
| 275 |
m.replies the result of the evaluation. |
|---|
| 276 |
* New Auth Framework: config keys now have their own permissions. So |
|---|
| 277 |
you can allow people to view or edit only some of the config values. |
|---|
| 278 |
auth.password defaults to false. Still needs some work. |
|---|
| 279 |
|
|---|
| 280 |
2006-08-26 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 281 |
|
|---|
| 282 |
* Plugin message mapper: new implementation. Multi-word parameters now |
|---|
| 283 |
need not be the last, and it is possible to retrieve the entire |
|---|
| 284 |
substring with preserved whitespace by using to_s. Also, parts of the |
|---|
| 285 |
map string can be bracketed to make them optional. Examples: |
|---|
| 286 |
remind :user [about] *stuff |
|---|
| 287 |
will respond to |
|---|
| 288 |
remind me about washing my teeth |
|---|
| 289 |
and also to |
|---|
| 290 |
remind me washing my teeth |
|---|
| 291 |
It is possible to have parameters in brackets, in which case they will |
|---|
| 292 |
be optional too, and default to nil or [] (resp. single- and |
|---|
| 293 |
multi-word parameters) unless an alternative is provided in the |
|---|
| 294 |
:defaults hash for the message map options. |
|---|
| 295 |
* Script plugin: new (UNSAFE!) eval function. Not documented in help. |
|---|
| 296 |
Not permitted by default. |
|---|
| 297 |
|
|---|
| 298 |
2006-08-25 Mark Kretschmann <markey@web.de> |
|---|
| 299 |
|
|---|
| 300 |
* Added quiz plugin, a multiplayer trivia quiz game. |
|---|
| 301 |
|
|---|
| 302 |
2006-08-20 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 303 |
|
|---|
| 304 |
* Topic plugin: fix a bug that prevented it from loading |
|---|
| 305 |
correctly. |
|---|
| 306 |
* New IRC Framework: make sure that NOTICEs and PRIVMSGs do not |
|---|
| 307 |
raise an exception when the target is in one of the special forms |
|---|
| 308 |
#<mask> or $<mask>. Needs some work, though, since this case should be |
|---|
| 309 |
handled specifically. |
|---|
| 310 |
|
|---|
| 311 |
2006-08-17 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 312 |
|
|---|
| 313 |
* Fix help: It got broken while rearranging the plugin stuff, now it's |
|---|
| 314 |
properly fixed. |
|---|
| 315 |
* New Auth Framework: forgot to create the InvalidPassword exception. |
|---|
| 316 |
It's a RuntimeError now. |
|---|
| 317 |
* Fix help: this time for real (or so I hope). |
|---|
| 318 |
* New IRC Framework: topic plugin now works correctly. |
|---|
| 319 |
* New Auth Framework: nickserv plugin now defaults to false for its |
|---|
| 320 |
auth, so that only owner can do stuff with it |
|---|
| 321 |
* New Auth Framework: fix horrible typo, assignment instead of |
|---|
| 322 |
equality test when checking for the username during login. |
|---|
| 323 |
* Keywords plugin: tell and forget work again without 'keyword' before |
|---|
| 324 |
them. |
|---|
| 325 |
|
|---|
| 326 |
2006-08-12 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 327 |
|
|---|
| 328 |
* Subregistry: force prefix to be a String with to_s |
|---|
| 329 |
|
|---|
| 330 |
2006-08-11 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 331 |
|
|---|
| 332 |
* AutoOp plugin: adapted to the new IRC framework. |
|---|
| 333 |
* AutoOp plugin: trigger autoop on nick change too. |
|---|
| 334 |
* New Auth Framework: allow? method now informs a user when they don't |
|---|
| 335 |
have permission to do what they asked for. |
|---|
| 336 |
* New nickreply and nickokay methods: they act like the old reply |
|---|
| 337 |
method, but include the nick of the user the bot is replying to when |
|---|
| 338 |
talking in public. The usual reply method can be configured to act |
|---|
| 339 |
like this as default. |
|---|
| 340 |
|
|---|
| 341 |
2006-08-10 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 342 |
|
|---|
| 343 |
* Fix a bug in new IRC Framework: the list of channels a quitting user was |
|---|
| 344 |
on was not built correctly, causing an exception when the user was not |
|---|
| 345 |
in the first channel in the list of channels. |
|---|
| 346 |
* Fix a bug in new Auth Framework: BotUser's name is changed via |
|---|
| 347 |
username=, not name=. |
|---|
| 348 |
* New HalfLife 2 plugin from ocr: queries online servers for online |
|---|
| 349 |
status and number of users. |
|---|
| 350 |
|
|---|
| 351 |
2006-08-07 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 352 |
|
|---|
| 353 |
* Add kick method to kernel: plugins can now use |
|---|
| 354 |
@bot.kick channel, user, reason |
|---|
| 355 |
to kick a user from a channel |
|---|
| 356 |
* RSS plugin: fix rewatch_rss method |
|---|
| 357 |
* RSS plugin: the different ways to represent channels before and |
|---|
| 358 |
after the New IRC Framework was causing strange problems such as |
|---|
| 359 |
watched feed not being listed as such, undeletable watches, double |
|---|
| 360 |
watches etc. Fix this by checking both for the Channel objects and |
|---|
| 361 |
their to_s form when checking for watches or deleting them. |
|---|
| 362 |
|
|---|
| 363 |
2006-08-06 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> |
|---|
| 364 |
|
|---|
| 365 |
* Updating the ChangeLog again: describe the new stuff in trunk which |
|---|
| 366 |
will be made available in the next release. Use Gnu style for new |
|---|
| 367 |
changelog entries (yyyy-mm-dd name <email address>\n<tab> ...): |
|---|
| 368 |
there's a macro for this since at least Vim 6.x and higher, called by |
|---|
| 369 |
<Leader>o (default leader: slash (\)) |
|---|
| 370 |
* New IRC Framework: Server, Channels, User, Netmasks etc are all |
|---|
| 371 |
proper Ruby objects. The better organization will allow multi-server |
|---|
| 372 |
connections to be implemented more easily |
|---|
| 373 |
* Modularize core: split the internal functionality from what can be |
|---|
| 374 |
implemented as botmodules (which work just the same as plugins). Move |
|---|
| 375 |
Configuration, Basics and Auth out of the 'kernel' into core |
|---|
| 376 |
botmodules. |
|---|
| 377 |
* New Auth Framework: BotUsers are now Ruby objects with attached |
|---|
| 378 |
PermissionSets which define what the BotUser can do, by channel if |
|---|
| 379 |
necessary. The new framework allows very fine-grained control while |
|---|
| 380 |
still being very easy to manage for elementary usage. BotUser data can |
|---|
| 381 |
be exported and imported, but no backwards compatibility has been |
|---|
| 382 |
implemented yet. Most plugins still have to be updated to the new |
|---|
| 383 |
command-path-based mechanism. |
|---|
| 384 |
|
|---|
| 385 |
Sun Aug 06 17:33:55 BST 2006 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 386 |
|
|---|
| 387 |
* 0.9.10 released |
|---|
| 388 |
* Changes: Lots of new and updated plugins, including one to poll RSS feeds. |
|---|
| 389 |
A first step towards a better auth system (total revamp due in 0.9.11). |
|---|
| 390 |
Improvements to network and server code which should provide greater |
|---|
| 391 |
stability. A new message queueing mechanism with bitrate throttling. A new |
|---|
| 392 |
logging framework for debugging and tracing the activities of the bot. A |
|---|
| 393 |
new split-db registry system for better performance and transactional |
|---|
| 394 |
usage of bdb for resilience. More integration with Nickserv where |
|---|
| 395 |
available including optional automatic ghost-killing. |
|---|
| 396 |
|
|---|
| 397 |
Wed Sep 07 20:16:46 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 398 |
|
|---|
| 399 |
* Fixed quit, broke it last commit |
|---|
| 400 |
* Fixed trap() for win32 |
|---|
| 401 |
|
|---|
| 402 |
Sun Aug 21 13:29:55 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 403 |
|
|---|
| 404 |
* fix for bug in quakenet plugin (trac #14) |
|---|
| 405 |
* multiple fixes for unescaped bot nick in regexp's (trac #13) |
|---|
| 406 |
|
|---|
| 407 |
Fri Aug 12 20:51:38 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 408 |
|
|---|
| 409 |
* fix up autoop plugin a bit |
|---|
| 410 |
|
|---|
| 411 |
Thu Aug 11 00:13:11 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 412 |
|
|---|
| 413 |
* Added two plugins from Robin Kearney <robin@riviera.org.uk> |
|---|
| 414 |
* Threat (US threat level :P) |
|---|
| 415 |
* bash (bash.org quotes) |
|---|
| 416 |
|
|---|
| 417 |
Thu Aug 11 00:04:31 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 418 |
|
|---|
| 419 |
* Patches from "Alexey I. Froloff" <raorn@altlinux.ru> |
|---|
| 420 |
* Do not use "/home/#{Etc.getlogin}/" for default home directory, use |
|---|
| 421 |
"#{Etc.getpwnam(Etc.getlogin).dir}/" instead. |
|---|
| 422 |
* Do not try to load same plugin from different locations. Added ability |
|---|
| 423 |
to disable system-wide plugins - create PLUGIN.rb.disabled in user's |
|---|
| 424 |
plugins directory. |
|---|
| 425 |
* For example, to disable freshmeat plugin installed in /usr/share/rbot/plugins/freshmeat.rb one can create empty file ~/.rbot/plugins/freshmeat.rb.disabled |
|---|
| 426 |
|
|---|
| 427 |
Mon Aug 08 23:08:01 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 428 |
|
|---|
| 429 |
* new markov plugin for random inane chat |
|---|
| 430 |
|
|---|
| 431 |
Sun Aug 07 18:20:24 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 432 |
|
|---|
| 433 |
* stop insult plugin being used to insult the bot |
|---|
| 434 |
|
|---|
| 435 |
Sun Aug 07 17:53:06 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 436 |
|
|---|
| 437 |
* workaround for people without YAML::load_file |
|---|
| 438 |
* quit message for restart |
|---|
| 439 |
|
|---|
| 440 |
Sun Aug 07 15:11:07 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 441 |
|
|---|
| 442 |
* fix address_prefix, broken in 0.9.9, reported by ruskie. |
|---|
| 443 |
|
|---|
| 444 |
Sat Aug 06 00:54:34 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 445 |
|
|---|
| 446 |
* Released 0.9.9 |
|---|
| 447 |
|
|---|
| 448 |
Fri Aug 05 23:55:20 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 449 |
|
|---|
| 450 |
* few more tweaks preparing to release 0.9.9 |
|---|
| 451 |
|
|---|
| 452 |
Thu Aug 04 23:03:30 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 453 |
|
|---|
| 454 |
* Improved ircd recognition of rfc2812.rb |
|---|
| 455 |
* de-string'd, de-cap'd rfc2812.rb, looks less shouty now |
|---|
| 456 |
* moved the Q auth stuff (for quakenet) into a new qauth plugin (untested!) |
|---|
| 457 |
* finish fixing the httputil |
|---|
| 458 |
|
|---|
| 459 |
Thu Aug 04 00:11:52 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 460 |
|
|---|
| 461 |
* Tweaked the debug() stuff a bit. Need to do this more cleanly really |
|---|
| 462 |
* Added a fair bit of documentation for some of the new features |
|---|
| 463 |
|
|---|
| 464 |
Wed Aug 03 15:25:07 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 465 |
|
|---|
| 466 |
* Added french language file (TODO most of the plugins just talk english) |
|---|
| 467 |
* The way the Enum configs were set up, it wasn't possible to add language |
|---|
| 468 |
files to rbot at runtime (the directory was only scanned at startup). Now |
|---|
| 469 |
you can set a values Proc, which is called to return a list of allowed |
|---|
| 470 |
values whenever it's queried. |
|---|
| 471 |
* Added Config module for determining where we were installed. |
|---|
| 472 |
Unfortunately rubygems is a total whore in this regard, and I hope the |
|---|
| 473 |
current hackery I have to do to support it becomes redundant in the |
|---|
| 474 |
future. |
|---|
| 475 |
|
|---|
| 476 |
Wed Aug 03 00:31:41 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 477 |
|
|---|
| 478 |
* Added Rakefile, tweaked gemspec |
|---|
| 479 |
|
|---|
| 480 |
Tue Aug 02 16:27:36 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 481 |
|
|---|
| 482 |
* Fixed the new http.proxy* settings, they work! |
|---|
| 483 |
* Fixed a bug with auth-checking for the config module |
|---|
| 484 |
* misc tweaks |
|---|
| 485 |
|
|---|
| 486 |
Sun Jul 31 02:20:08 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 487 |
|
|---|
| 488 |
* Updated docgen to generate rdoc again with the new repo structure |
|---|
| 489 |
* added new restart command to the core bot, quits irc and reexecs the |
|---|
| 490 |
bot, to pick up new code/libraries etc. |
|---|
| 491 |
|
|---|
| 492 |
Sat Jul 30 22:33:36 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 493 |
|
|---|
| 494 |
* Config items are now objects, various types are available. |
|---|
| 495 |
* The config wizard will now use registered config items if :wizard is set |
|---|
| 496 |
to true for those items. It will ask questions in the order they were |
|---|
| 497 |
registered. |
|---|
| 498 |
* The config module now works for doing runtime configuration. |
|---|
| 499 |
* misc refactoring |
|---|
| 500 |
|
|---|
| 501 |
Sat Jul 30 01:19:32 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 502 |
|
|---|
| 503 |
* config module for configuring the running bot via IRC |
|---|
| 504 |
* BotConfig.register method for various modules and any plugin to register |
|---|
| 505 |
bot configuration which the new config module will expose for them. |
|---|
| 506 |
* various other tweaks as I continue to refactor.. |
|---|
| 507 |
|
|---|
| 508 |
Fri Jul 29 13:07:56 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 509 |
|
|---|
| 510 |
* Moved some stuff out of util.rb into the plugins that actually need |
|---|
| 511 |
them. Those methods didn't belong in util as they were plugin-specific. |
|---|
| 512 |
* moved a few more plugins to use map() where appropriate |
|---|
| 513 |
* made the url plugin only store unique urls |
|---|
| 514 |
|
|---|
| 515 |
Thu Jul 28 23:45:26 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 516 |
|
|---|
| 517 |
* Reworked the Timer module. The Timer now has a smart thread manager to |
|---|
| 518 |
start/stop the tick() thread. This means the timer isn't called every 0.1 |
|---|
| 519 |
seconds to see what needs doing, which is much more efficient |
|---|
| 520 |
* reworked the ircsocket queue mechanism to use a Timer |
|---|
| 521 |
* reworked the nickserv plugin to use maps |
|---|
| 522 |
* made server.reconnect_wait configurable |
|---|
| 523 |
* added Class tracing mechanism to bin/rbot, use --trace Classname for |
|---|
| 524 |
debugging |
|---|
| 525 |
|
|---|
| 526 |
Tue Jul 26 14:41:34 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 527 |
|
|---|
| 528 |
* Prevent multiple plugin registrations of the same name |
|---|
| 529 |
* reworking the config system to use yaml for persistence |
|---|
| 530 |
* reworking the config system key names |
|---|
| 531 |
* on first startup, the bot will prompt for the essential startup config |
|---|
| 532 |
* new config module for configuring the bot at runtime |
|---|
| 533 |
* new config module includes new configurables, for example changing the |
|---|
| 534 |
bot's language at runtime. |
|---|
| 535 |
* various other fixes |
|---|
| 536 |
* New way of mapping plugins to strings, using maps. These may be |
|---|
| 537 |
familiar to rails users. This is to reduce the amount of regexps plugins |
|---|
| 538 |
currently need to do to parse arguments. The old method (privmsg) is still |
|---|
| 539 |
supported, of course. Example plugin now: |
|---|
| 540 |
def MyPlugin < Plugin |
|---|
| 541 |
def foo(m, params) |
|---|
| 542 |
m.reply "bar" |
|---|
| 543 |
end |
|---|
| 544 |
|
|---|
| 545 |
def complexfoo(m, params) |
|---|
| 546 |
m.reply "qux! (#{params[:bar]} #{params[:baz]})" |
|---|
| 547 |
end |
|---|
| 548 |
end |
|---|
| 549 |
plugin = MyPlugin.new |
|---|
| 550 |
# simple map |
|---|
| 551 |
plugin.map 'foo' |
|---|
| 552 |
|
|---|
| 553 |
# this will match "rbot: foo somestring otherstring" and pass the |
|---|
| 554 |
# parameters as a hash using the names in the map. |
|---|
| 555 |
plugin.map 'foo :bar :baz', :action => 'complexfoo' |
|---|
| 556 |
# this means :foo is an optional parameter |
|---|
| 557 |
plugin.map 'foo :foo', :defaults => {:foo => 'bar'} |
|---|
| 558 |
# you can also gobble up into an array |
|---|
| 559 |
plugin.map 'foo *bar' # params[:bar] will be an array of string elements |
|---|
| 560 |
# and you can validate, here the first param must be a number |
|---|
| 561 |
plugin.map 'foo :bar', :requirements => {:foo => /^\d+$/} |
|---|
| 562 |
|
|---|
| 563 |
|
|---|
| 564 |
Sat Jul 23 01:39:08 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 565 |
|
|---|
| 566 |
* Changed BotConfig to use yaml storage, method syntax instead of hash for |
|---|
| 567 |
get/set, to allow more flexibility and encapsulation |
|---|
| 568 |
* Added convenience method Message.okay (m.okay is the same as the |
|---|
| 569 |
old-style @bot.okay m.replyto) |
|---|
| 570 |
|
|---|
| 571 |
Wed Jul 20 23:30:01 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 572 |
|
|---|
| 573 |
* Move some core plugins to use the new httputil |
|---|
| 574 |
* fix wserver's redirection handling for relative (i.e. broken) redirects |
|---|
| 575 |
* fix tube plugin's html parsing |
|---|
| 576 |
|
|---|
| 577 |
Wed Jul 20 01:18:06 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 578 |
|
|---|
| 579 |
* Add new httputil object to the bot object, to be used by plugins etc |
|---|
| 580 |
that wish to make http requests. It sets up all the proxies etc for them |
|---|
| 581 |
according to bot config. |
|---|
| 582 |
|
|---|
| 583 |
Sat Jul 16 02:23:13 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 584 |
|
|---|
| 585 |
* Apply most of Rene's patch and fix various plugins. |
|---|
| 586 |
* New plugin: autoop (auto ops via hostmask) |
|---|
| 587 |
* New feature: karmastats |
|---|
| 588 |
|
|---|
| 589 |
Wed Oct 13 16:16:31 BST 2004 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 590 |
|
|---|
| 591 |
* Fix bug with quotes plugin where it gets confused and sees both a quote |
|---|
| 592 |
and a keyword, both plugins are triggered by, for example "addquote foo is |
|---|
| 593 |
bar" |
|---|
| 594 |
* fixed this by implementing the "has_responded" flag on a message. When a |
|---|
| 595 |
plugin replied to a message (or it manually sets m.replied to true), the |
|---|
| 596 |
keywords plugin will honour that flag and not examine the message for |
|---|
| 597 |
keywords. This flag can also be checked by listen plugins that don't want to |
|---|
| 598 |
interfere with other plugin commands. |
|---|
| 599 |
|
|---|
| 600 |
Mon Oct 11 00:37:52 BST 2004 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 601 |
|
|---|
| 602 |
* Fixes to the NickServ plugin |
|---|
| 603 |
|
|---|
| 604 |
Sat Oct 09 23:23:24 BST 2004 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 605 |
|
|---|
| 606 |
* Keyword searching |
|---|
| 607 |
|
|---|
| 608 |
Fri Oct 08 00:40:07 BST 2004 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 609 |
|
|---|
| 610 |
* fixed insult plugin |
|---|
| 611 |
* fixed excuse plugin |
|---|
| 612 |
|
|---|
| 613 |
Thu Oct 07 23:28:05 BST 2004 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 614 |
|
|---|
| 615 |
* searching for urls in the url plugin |
|---|
| 616 |
* roshambo (rock/paper/scissors) plugin from Hans Fugal <hans@fugal.net> |
|---|
| 617 |
|
|---|
| 618 |
Sat Apr 17 20:56:50 BST 2004 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 619 |
|
|---|
| 620 |
* Oh, found new tv plugin in my inbox from ages ago, but it's still not |
|---|
| 621 |
working so I guess it changed again since then |
|---|
| 622 |
* New eightball plugin from Daniel Free |
|---|
| 623 |
|
|---|
| 624 |
Sat Apr 17 20:44:43 BST 2004 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 625 |
|
|---|
| 626 |
* Fixed the babelfish parser so translate works again. |
|---|
| 627 |
* Misc other fixes |
|---|
| 628 |
* Note some plugins are broken (excuse,insult) because the server they use |
|---|
| 629 |
went away. I don't know of a replacement right now. |
|---|
| 630 |
* tv plugin seems broken, perhaps the html changed. |
|---|
| 631 |
|
|---|
| 632 |
Thu Jan 15 21:37:38 GMT 2004 Tom Gilbert <tom@linuxbrit.co.uk> |
|---|
| 633 |
|
|---|
| 634 |
* Fixes for ruby 1.8 |
|---|
| 635 |
|
|---|
| 636 |
0.9.8 |
|---|
| 637 |
* new plugin from Alan Third <alan@idiocy.org>, allows you to search and list |
|---|
| 638 |
UK TV programmes. |
|---|
| 639 |
|
|---|
| 640 |
0.9.7 |
|---|
| 641 |
* various plugin updates |
|---|
| 642 |
* fix (again) for C to F temp conversion in weather plugin |
|---|
| 643 |
* channel topic patch from Peter Suschlik, gives plugin better access to topic |
|---|
| 644 |
changes and related information |
|---|
| 645 |
|
|---|
| 646 |
0.9.6 |
|---|
| 647 |
* changes to layout of slashdot plugin output |
|---|
| 648 |
* freshmeat plugin, show latest updates or search |
|---|
| 649 |
* fix to C to F temp conversion in weather plugin |
|---|
| 650 |
* status command returns some bot status |
|---|
| 651 |
* fortune plugin |
|---|
| 652 |
* using BDB::Btree everywhere now, instead of BDB::Hash, because the Btree api |
|---|
| 653 |
allows me to set my own key comparison function. This is needed to keep |
|---|
| 654 |
supporting case insensitivity (vital for IRC), which was sadly broken in |
|---|
| 655 |
0.9.5 :( All existing dbs will be upgraded automatically. |
|---|
| 656 |
* roulette plugin - play russian roulette :) also keeps game stats. |
|---|
| 657 |
* new config option, NO_KEYWORD_ADDRESS. If set to "true", the bot will always |
|---|
| 658 |
respond to keywords it knows even when not addressed and the message doesn't |
|---|
| 659 |
start with '. Message must end with "?" however. |
|---|
| 660 |
* hopefully fixed welcome message parsing from certain server types |
|---|
| 661 |
|
|---|
| 662 |
0.9.5 |
|---|
| 663 |
* plugin object registry |
|---|
| 664 |
This provides persistant storage for plugins via a hash interface. The |
|---|
| 665 |
default mode is an object store, so you can store ruby objects and reference |
|---|
| 666 |
them with hash keys. This is because the default store/restore methods of |
|---|
| 667 |
the plugins' RegistryAccessor are calls to Marshal.dump and Marshal.restore, |
|---|
| 668 |
for example: |
|---|
| 669 |
blah = Hash.new |
|---|
| 670 |
blah[:foo] = "fum" |
|---|
| 671 |
@registry[:blah] = blah |
|---|
| 672 |
then, even after the bot is shut down and disconnected, on the next run you |
|---|
| 673 |
can access the blah object as it was, with: |
|---|
| 674 |
blah = @registry[:blah] |
|---|
| 675 |
The registry can of course be used to store simple strings, fixnums, etc as |
|---|
| 676 |
well, and should be useful to store or cache plugin data or dynamic plugin |
|---|
| 677 |
configuration. |
|---|
| 678 |
|
|---|
| 679 |
If you don't need to store objects, and strictly want a persistant hash of |
|---|
| 680 |
strings, you can override the store/restore methods to suit your needs, for |
|---|
| 681 |
example (in your plugin): |
|---|
| 682 |
def initialize |
|---|
| 683 |
class << @registry |
|---|
| 684 |
def store(val) |
|---|
| 685 |
val |
|---|
| 686 |
end |
|---|
| 687 |
def restore(val) |
|---|
| 688 |
val |
|---|
| 689 |
end |
|---|
| 690 |
end |
|---|
| 691 |
end |
|---|
| 692 |
Your plugins section of the registry is private, it has its own namespace |
|---|
| 693 |
(derived from the plugin's class name, so change it and lose your data). |
|---|
| 694 |
Calls to registry.each etc, will only iterate over your namespace. |
|---|
| 695 |
|
|---|
| 696 |
The nickserv and karma plugins use the new registry and should serve as a |
|---|
| 697 |
useful example. Basic usage of the registry is simple, just treat it as a |
|---|
| 698 |
hash, with values that never die (unless you delete() them). |
|---|
| 699 |
* Change to the nickserv plugin. The old method of putting the nickserv |
|---|
| 700 |
password in rbot.conf was useless for multiple nicks or easy updates. The |
|---|
| 701 |
plugin now uses the plugin registry to store passwords for any nicks it |
|---|
| 702 |
owns. The plugin can be told to register the current nick (supply a password |
|---|
| 703 |
or it'll generate one), identify for the current nick (if the password is |
|---|
| 704 |
known), and can be told the passwords for other nicks. If NickServ asks the |
|---|
| 705 |
bot to identify, it will automatically do so if it knows the appropriate |
|---|
| 706 |
password. |
|---|
| 707 |
* karma plugin now uses the plugin registry, it should automatically import |
|---|
| 708 |
your existing, stored karma data into the registry. |
|---|
| 709 |
* The babelfish plugin now caches results in the bot registry to speed up |
|---|
| 710 |
common lookups. |
|---|
| 711 |
* New message types and plugin methods to grab them, |
|---|
| 712 |
quit(QuitMessage): Called when a user (or the bot) quits IRC |
|---|
| 713 |
nick(NickMessage): Called when a user (or the bot) changes Nick |
|---|
| 714 |
topic(TopicMessage): Called when a user (or the bot) changes a channel topic |
|---|
| 715 |
* A plugin's listen() method will now receive any kind of Message, e.g. |
|---|
| 716 |
PrivMessage, NoticeMessage, NickMessage, JoinMessage, etc |
|---|
| 717 |
* New plugins: |
|---|
| 718 |
seen: the usual "seen" stuff: |
|---|
| 719 |
rbot: seen giblet? |
|---|
| 720 |
giblet was last seen xxx ago doing xxx |
|---|
| 721 |
cal: calls the unix cal program to display a calendar |
|---|
| 722 |
math: evaluates mathematical expressions: |
|---|
| 723 |
rbot: math 2+2 |
|---|
| 724 |
rbot: math 4 to the power of 8 |
|---|
| 725 |
rbot: math ((232+432) - 4) / 2 |
|---|
| 726 |
(ported from infobot. Thanks to Kevin Lenzo, who wrote the |
|---|
| 727 |
original infobot math module) |
|---|
| 728 |
slashdot: displays latest headlines or searches for articles |
|---|
| 729 |
url: stores urls mentioned in channels for regurgitation later |
|---|
| 730 |
weather: grabs and parses METAR weather data, will remember the last weather |
|---|
| 731 |
code you asked for so you don't have to :) |
|---|
| 732 |
* New utility function, Util.http_get(url) for getting remote data via http, |
|---|
| 733 |
just dumps response.body into a string and returns it, or nil if anything at |
|---|
| 734 |
all goes wrong. Useful for simple plugins. |
|---|
| 735 |
* random quit messages if none specified, messages set in language description |
|---|
| 736 |
file |
|---|
| 737 |
* keywords are now stored in bdb databases - your old keywords.rbot will be |
|---|
| 738 |
imported. Static keywords (fact packs) are also stored in bdb databases, and |
|---|
| 739 |
rbot will automatically convert any text .fact file dropped in the confdir's |
|---|
| 740 |
keywords subdirectory, at startup, into a bdb file. If both a db and a text |
|---|
| 741 |
file exist of the same name (except the extension), the text file will be |
|---|
| 742 |
imported and merged into the database. |
|---|
| 743 |
static keywords will be looked up in each factpack db in turn, in |
|---|
| 744 |
alphabetical filename order - so you can prioritise using the filename if |
|---|
| 745 |
you wish. |
|---|
| 746 |
* fixed a bug with autsplitting long sent lines, the last line was often being |
|---|
| 747 |
split unnecessarily. |
|---|
| 748 |
|
|---|
| 749 |
0.9.4 |
|---|
| 750 |
* Massive cleanup of rfc2812.rb, contributed by Lars Christensen |
|---|
| 751 |
<dsl8950@vip.cybercity.dk>, gets rid of a lot of regexps |
|---|
| 752 |
* Fixed bug reading static keyword files - "foo <=is=> bar" may not have |
|---|
| 753 |
worked for a couple of releases, only "foo<=is=>bar" was working - this was |
|---|
| 754 |
not intended and should be fixed now |
|---|
| 755 |
* Experimental send queue, to prevent the bot from flooding out, the delay |
|---|
| 756 |
between sending messages to the server defaults to 2s, but is configurable |
|---|
| 757 |
in conf.rbot, set SENDQ_DELAY (0 to disable queueing). You can also set/get |
|---|
| 758 |
the value from the bot, "rbot: options get sendq_delay", and |
|---|
| 759 |
"rbot: options set sendq_delay 1.5", if you have sufficient auth for "config" |
|---|
| 760 |
This is a bursting sendq, most ircd's allow bursts of up to 5 |
|---|
| 761 |
lines, with non-burst limits of 512 bytes/2 seconds. To set the burst limit, |
|---|
| 762 |
configure SENDQ_BURST in conf.rbot, or do the same kind of stuff with |
|---|
| 763 |
"rbot: options set sendq_burst 2", etc. |
|---|
| 764 |
The defaults are 2s/4 burst, which seem to work okay for me. |
|---|
| 765 |
* support for multiple, customisable, addressing prefixes. Set ADDRESS_PREFIX |
|---|
| 766 |
in conf.rbot to a space separate list of addressing prefixes, e.g |
|---|
| 767 |
ADDRESS_PREFIX = | ! => |
|---|
| 768 |
Would mean that all of the following in channel messages would cause the bot |
|---|
| 769 |
to respond: |
|---|
| 770 |
rbot: version |
|---|
| 771 |
|version |
|---|
| 772 |
!version |
|---|
| 773 |
=>version |
|---|
| 774 |
* bb plugin removed, bb is nearly over and it doesn't work 100% anyway |
|---|
| 775 |
* Two plugins from brailsmt (from #ruby-lang on openprojects), a stats plugin |
|---|
| 776 |
which monitors usage of 1-word sentences, and lart, which allows you to ask |
|---|
| 777 |
rbot to lart people - with an optional reason - larts are user-definable and |
|---|
| 778 |
can be added on the fly. |
|---|
| 779 |
* made google.rb work for people with 1.6 ruby's net/http |
|---|
| 780 |
|
|---|
| 781 |
0.9.3 |
|---|
| 782 |
|
|---|
| 783 |
* fix quit messages |
|---|
| 784 |
* new plugin for handling nickserv-protected nicks, use NICKSERV_PASSWORD in |
|---|
| 785 |
the config file. |
|---|
| 786 |
* fixes to a few other buglets |
|---|
| 787 |
* new plugin to grab bigbrother headlines, still buggy and only useful for UK |
|---|
| 788 |
folks who love bb :-) |
|---|
| 789 |
* fixes to various plugins |
|---|
| 790 |
* Patch from akira yamada <akira@ruby-lang.org> |
|---|
| 791 |
DNS plugin: Use resolv-replace if found, do lookup in new thread |
|---|
| 792 |
Fix bug joining channels with keys |
|---|
| 793 |
|
|---|
| 794 |
0.9.2 |
|---|
| 795 |
|
|---|
| 796 |
* better "connect failure" error message |
|---|
| 797 |
* better option parsing, and --debug option |
|---|
| 798 |
* access to bot's online help via commandline, eg: |
|---|
| 799 |
./rbot.rb --help |
|---|
| 800 |
./rbot.rb --help core |
|---|
| 801 |
./rbot.rb --help "core save" |
|---|
| 802 |
* Fix broken help from last point release |
|---|
| 803 |
* Plugin API modification and cleanup. You no longer need to set @listen to |
|---|
| 804 |
true in order to get all NOTICE and PRIVMSGs, you just need to define the |
|---|
| 805 |
method. The method is now called listen(), renamed from listener(). This |
|---|
| 806 |
should be the last time the plugin api is changed incompatibly. |
|---|
| 807 |
* New plugin method kick(). Use it to see kicks (duh :)) |
|---|
| 808 |
* New plugin methods join(), part(). Obvious uses. |
|---|
| 809 |
* Example plugin autorejoin.rb, uses kick event to rejoin channel and insult |
|---|
| 810 |
kicker |
|---|
| 811 |
* fix bug in remind plugins "remind me no more" recognition. |
|---|
| 812 |
|
|---|
| 813 |
0.9.1 |
|---|
| 814 |
|
|---|
| 815 |
* Fix welcome message recognition for certain IRCd's. |
|---|
| 816 |
|
|---|
| 817 |
0.9 |
|---|
| 818 |
|
|---|
| 819 |
* Allow keyword definitions which end in '?', like this: |
|---|
| 820 |
bot: foo is bar\? |
|---|
| 821 |
* rdoc documentation! |
|---|
| 822 |
* fixed broken address regexp, "rbot: .foo" was being treated as an addressed |
|---|
| 823 |
form of "foo" (lost the .) |
|---|
| 824 |
* fix stupid bug in last release (looking for wrong default conf dir) |
|---|
| 825 |
|
|---|
| 826 |
0.8 |
|---|
| 827 |
|
|---|
| 828 |
* Tarball layout change. modules all in rbot/ now, and the rbot/ default |
|---|
| 829 |
configuration moved to rbotconf/. This lets the thing run from an unpacked |
|---|
| 830 |
tarball while also being ready to run with the modules installed somewhere |
|---|
| 831 |
else. |
|---|
| 832 |
* change hashbang to /usr/bin/env ruby, in order to use PATH looking for ruby, |
|---|
| 833 |
it's BSD friendly! |
|---|
| 834 |
* allow "botnick : foo" style addressing, and even "botnick... foo" |
|---|
| 835 |
* slap plugin (contributed by oct) |
|---|
| 836 |
* renamed bot.send to bot.sendmsg, I didn't really want to override send() ;D |
|---|
| 837 |
(thanks Kero) |
|---|
| 838 |
|
|---|
| 839 |
0.7.1 |
|---|
| 840 |
* Made sane for packagers. Looks in the right places for plugins and language |
|---|
| 841 |
files now, so extra effort shouldn't be needed there. |
|---|
| 842 |
|
|---|
| 843 |
0.7 |
|---|
| 844 |
|
|---|
| 845 |
* Fixed "nick taken on join" bug |
|---|
| 846 |
* Dice plugin patch from David Dorward |
|---|
| 847 |
* fix searchquote regexp |
|---|
| 848 |
* conf.rbot: PASSWORD -> SERVER_PASSWORD, to prevent confusion with PASSWD, |
|---|
| 849 |
which is for master auth. |
|---|
| 850 |
|
|---|
| 851 |
0.6 |
|---|
| 852 |
|
|---|
| 853 |
* Fixed addquote (was incrementing quote ID twice) |
|---|
| 854 |
* now strips colour/bold escapes from incoming messages (rbot was ignoring |
|---|
| 855 |
messages addressed using a bolded colon, for example). |
|---|
| 856 |
* minor bugfixes |
|---|
| 857 |
* more language breadth |
|---|
| 858 |
* Addressing works better now |
|---|
| 859 |
* Can autojoin channels with keys, conf.rbot line is: |
|---|
| 860 |
autojoin_channels #chan1, #chan2, #chan3 key, #chan4 key, #chan5 |
|---|
| 861 |
* dice plugin fixes |
|---|
| 862 |
|
|---|
| 863 |
0.5 |
|---|
| 864 |
|
|---|
| 865 |
* Initial release |
|---|