Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
Sometimes you just wish to google the first hit and have a clutter free
output showing only the url.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Since httputil.get_response() can raise exceptions, catch them into an
appropriate block. Turn a missing response body into a runtime error to
handle this error conditions consistently with other exceptions.
|
|
|
|
|
|
generate_strings() is now able to work with a single word. Additionally,
when the given lookup is not found in the database, it will try
lookups that start, and failing that include, the given one.
|
|
Make learn a higher-level function that queues one or more lines, and
make learn_line the low-level database access method.
|
|
expose set and bulk parameters in the each*() iterators. Some plugins
might need it for faster lookup.
|
|
The each_key()/each_value() methods of the accessor relied on the each()
method of the database, wasting I/O bandwidth and time by loading
unnecessary data (particularly when running each_key() on databases with
ridiculously enormous values such as in the markov plugin case).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The way objects are currently searched inside Mechanize objects is
deprecated in WWW::Mechanize version 0.9.0, so we switch to the
preferred syntax.
|
|
|
|
|
|
We were making use of an undefined variable e when catching ServerError
in the main loop.
|
|
When passing on the Array of split words from unreplied() to facts()
make sure that the passed argument behaves like an Array/String from
the MessageMapper.
|
|
|
|
|
|
Define configuration keys for maximum and default number of user data
items output, with a separate value for shouts (which are usually much
more verbose and therefore would have a much lower maximum and default).
Each command also allow the specification of the number of entries
actually output (different than the default, clipped at the configured
maximum.
This way user data has the same rate limiting as events.
Internally, the switches for the user data are also made more uniform to
select, where it makes sense, different sentences depending on how many
entries are being displayed (none, all, some).
|
|
|
|
|
|
|
|
This should help people find the right package.
|
|
|
|
We provide two methods that make it more simple and elegant for
botmodules to define paths relative to the bot's own directory
(botclass) and to the BotModule's (assumed) non-registry directory.
The first method is Irc::Bot#path(), which joins its arguments with the
botclass. This method can be used to access datafiles in the bot
directory with a much cleaner syntax; and since it uses File.join, the
resulting paths are also properly formatted on each platform, which
doesn't hurt.
Each BotModule now also carries a dirname() method that should return the
directory under botclass that holds the BotModule's datafiles. dirname()
defaults to the BotModule's name(), but it can be overridden, e.g. for
backwards compatibility (see the patch for the quotes plugin), or
for BotModules that share their datafiles.
Datafiles can be accessed using the BotModule#datafile() method that
joins the botclass, the dirname() and whatever other argument is passed.
|
|
Use File.join across the board, and refactor some botclass directory
handling. Most important changes:
* failure to create the registry and safe_save directory is now fatal;
* failure to create the local plugin directory prevents it from being
added to the plugin path (with a warning);
* botclass directory update from templates is now a standalone routine
called during init, making it possible to use it in other cases too.
|
|
This ensures that 'lastfm who' triggers the correct map.
|
|
|
|
there to make replies consistent with rbot's usual style
|
|
|
|
aliases in @registry are favored over literal last.fm users
|
|
nonexistent user(s)
|
|
|
|
|