| 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 |
|---|