Age | Commit message (Collapse) | Author |
|
|
|
|
|
We allow a filter to manipulate the arguments of sendmsg() by running
them through the filters of the :sendmsg group. The DataStream passed to
the filters has four keys:
:text => the message text
:type => the message type (typically, PRIVSMG or NOTICE)
:dest => the destination (typically, a Channel or User)
:options => options passed to sendmsg, merged with the default ones
|
|
Fix a typo in a comment and specify 'htmlinfo' in the debug message.
|
|
The geoip plugin defines and makes use of a GeoIP module to handle the
actual geoip data retrieval. The module used to be defined in the same
namespace as the plugin, and therefore in a barely accessible anonymous
module.
Move the GeoIP module to the outermost namespace to allow it to be
accessible from scripts and plugins too.
|
|
GeoIP tool also offer latitude and longitude, so read them as well.
|
|
Move the whitelist and badwords check in the message() method instead of
triggering on listen(). This is more correct and more efficient, and it
ensures that the whitelist protects mass-highlighters too.
|
|
When a masshl ban is added, the bot will ban (or kick or whatever)
anybody that calls more than a given fixed number of users or a
percentage of in-channel users.
|
|
|
|
Turn the confession extraction into its own method, and use it both for
specific and random confession retrieval.
|
|
The real confessions are in the 'main' div, so rather than
second-guessing their true location (and getting it wrong every time the
site changes layout), just skip to the 'main' div before looking for
content.
|
|
|
|
|
|
hh:mm
|
|
|
|
|
|
|
|
If we always abort, a failing first parser will cause a failure even though a
subsequently tried parser succeeded in getting the feed right. So only
return nil if rss was nil when the error list wasn't empty.
|
|
parenthesize argument(s) for future version
|
|
|
|
Commit 36f1f28e668919dfab75c8fc4d1020abad351bd1 borked error handling as
it assumed that a false or nil rss implied a nonempty errors, and it
failed to return early.
Fix by removing the early check for a missing rss and wrapping the
report_problem (and the previously missing 'return nil') in the check
for a nonempty errors array.
|
|
People living in the stone age (e.g. those stuck using Debian stable)
still have git 1.4.4.4, which doesn't support git log --pretty=format.
So we parse the git log --pretty=raw format instead, which should be
available even on such older systems.
For the same reason, parse git diff-index --stat instead of git diff
--shortstat.
|
|
A stupid missing hash sign prevented the full registry accessor doc from
being parsed by rdoc.
|
|
Some feeds fail when parsed by some parsers, but work correctly with
others (e.g. http://www.blueman.com/community/rss fails with xmlparser
but not with REXML). So try all of them and only abort if none works
rather than failing because the default parser fails.
|
|
|
|
Due to the way mapping work, quote commands whose first parameter is a
channel must be mapped before the ones that implicitly refer to the
current channel.
This has the upside that they really work, and the downside that
commands that refer to the current channel must specify the channel if
their argument begins wit something that looks like a channel spec.
However, this last case is extremely rare, so we're fine.
|
|
The RFC1459 casemaps had the non-letter casemapping the wrong way
around. Fix by swapping them.
|
|
|
|
Break early from ignore checks, and skip them altogether when the
message is ignored already.
|
|
In some circumstances the user might want to turn the bot into a pure
logbot for some channels. This can now be achieved by adding that
channel to the irc.ignore_channels config key, that makes the bot ignore
all PRIVMSG to that channel (note that notices and service messages such
as joins and parts are still acted on, just like for irc.ignore_users).
|
|
|
|
There is no need to warn when calling watchRss on a watched feed; in
fact, since watchRss() is called every time a watcher is added, it just
spam the channels with a useless message that also provides unnecessary
information. So just return.
|
|
When lots of rss feeds are defined, the bot will flood the channel on
rss list. Fix by showing a compact list when the number of feeds is
higher than the maximum output lines.
|
|
The reconnect() call in the main loop must be protected in the
begin/rescue blocks. Most of the rescue blocks can be fall-through,
because the begin/end is wrapped in a loop. The only exception is the
ServerError block that issues a retry lest too_fast is reset to false
even when it should be true.
|
|
Demauro's search results can contain some HTML, so clean it up before
output.
|
|
|
|
|
|
false
|
|
|
|
Some editors put a BOM at the beginning of UTF-8 files, and it's not
stripped by Ruby's String#strip, so we have to get rid of it ourselves.
|
|
The new Wordlist.exist? method can be used to check if a wordlist file exists.
It will refuse to check upstream of the wordlist base directory
|
|
Introduce an elementary Wordlist.list() command that accepts an optional
:pattern option to restrict the list to wordlists matching the given
pattern.
Also introduce a wordlist UI to list wordlists from IRC.
|
|
|
|
|
|
|
|
The 'urls info' command to manually query for link information should
always work, regardless of the setting of the url.only_on_channels
config setting.
Fix by making the channels list for handle_urls() into an option
(defaulting to url.only_on_channels) and passing an empty list from
info().
|
|
Turn handle_urls() options (other than the message) into a parameter
hash.
|
|
|
|
Change the parseRss routine to return the number of found items, or nil
in case of error. This helps clearly differentiate between empty feeds
(which are still legit) and b0rked feeds.
This change in logic does not alter the fact that a feed update with no
items will not wipe existing old feed items.
|
|
|