Age | Commit message (Collapse) | Author |
|
We allow rss handles to be of any case on creation, even though matching
is case-insentivie. However, when renaming an rss using 'rss change
handle' and only changing the case, two things prevented this from
working correctly:
* since the new downcased handle was equal to the old downcased handle,
the bot would prevent the renaming due to the existence of the new
handle
* the new handle was forcefully downcased, preventing the user
from renaming handle 'case' to 'CaSe'.
Fix by checking for this case explicitly, and handling it separately.
|
|
if 'in' was present in the message but not part of the time
specification (e.g. because the specification was with 'every' or with
'at'), the parser would fail at the first attempt (look for time after
'in') and fail unnecessarily.
Fix by trying all possibilities and only giving an error if none
succeeds.
|
|
The first_run check comparing the time delta from last success failed
when feed.last_success was nil. Prevent this from happening by checking
if we are on the first run before the rest of the checks.
|
|
|
|
Commit a306b2c68eb58c1c88057ff7ee78895401adb6a9 introduced a fix to
prevent a player from playing something like g9r9, but the fix actually
prevented any single-card play. Fix by making the \1 optional.
|
|
|
|
The regexp should make sure that the second card is equal to the first
specified card, instead of matching the card expression one or two
times. Otherwise, a play like 'pl g9r9' would be accepted when the
player had two r9 cards and could play them.
This is only a aesthetical change because the plays would still be
valid, albeit (1) surprising and (2) mismatching what the user actually
wrote.
|
|
|
|
|
|
|
|
Google changed their HTML again, breaking gcalc. Fix by using the WAP
search and get the first result if it contains an equal sign.
|
|
The Ruby/DICT library is so tightly coupled with the rdict client that
its errors exit on initialize, instead of letting the lib user do that.
This makes those errors untrappable from the code.
Fix by monkeypatching DICTError to just act like the other exceptions in
Ruby.
|
|
|
|
|
|
|
|
This reverts commit 06485aeb187dde5e81204b06c8e956e7e035c323. The mutex
is necessary because of the concurrent learning and database conversion.
Some other approach should be used instead (e.g. skipping the mutex if
not running a conversion).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tags are specified on the IRC line by putting them between square
brakets.
|
|
|
|
|
|
Detect tumblr posts and use the reblogging API to post them. Also
produce HTML-escaped lines for video and photo captions because
the format=markdown specification doesn't seem to apply to them.
|
|
Fly-by whitespace cleanups too.
|
|
Instead of failing (silently) when the OAuth process cannot complete due
to a missing key/secret pair, report the issue to the user.
|
|
|
|
|
|
|
|
When OAuth is missing, some barebone functionality in the twitter plugin
is still available (namely, status reading from public timelines), so
don't fail loading and just warn the users and admins about the reduced
availability.
|
|
There was a bug in "twitter pin" functionality where it didn't
check to verify that the PIN entered by the user was valid. As
a result, if the user entered an invalid PIN, the bot would
not respond as to whether or not twitter account binding was
successful. I replaced it with an error message if the PIN
is invalid. I also changed the error message for someone
who tries to enter a PIN without first using "twitter
authorize" to be more clear.
|
|
Module now requires twitter.key and twitter.secret config parameters for
write access and private users' statuses. Added twitter authorize,
twitter deauthorize, and twitter pin features, removed twitter identify
feature, as basic authentication is no longer supported.
|
|
Atom categories don't have a content attribute, and obviously they don't
have an empty? method. Squash them to their label rather than bombing
out with error during the blank2nil processing.
|
|
|
|
|
|
|
|
|
|
If the random generation site failed for any reason (eg. by returning a
non-2xx page), starting a hangman game would fail silently.
Catch this case and announce the failure.
|
|
|
|
This prevents the regexp scan to grab the Google Privacy link when no
results were found.
|
|
|
|
|
|
|
|
|
|
The target was being of the wrong class (String vs Irc::Channel),
busting all the hash lookups.
|