Menu

Gribble_Project_Git_Repository

nanotube

The git repository of this very sourceforge project contains some new plugins, plus a number of enhancements and bugfixes for existing plugins. I try to keep this list updated, so that you don't have to sift through the git commit logs to figure out what was changed.

New plugins

Modifications

Alias

  • merged upstream Fix this bug in Alias. If an alias contained both required arguments and "$*" proper check for presence of required arguments was not done.
  • merged upstream Improve doc string for aliases, if optional arguments are present, doc says "at least X arguments".

BadWords

  • Fix up some docstrings, add a plugin-level docstring, make note for requireWordBoundaries config that it needs regexp regeneration to apply.

Channel

  • Add a --count option to the nicks command, which returns a count of the nicks in channel.

ChannelLogger

  • Include in logs quit and part reasons, if provided.

Dict

  • add synonym function, which gets a random synonym from Moby Thesaurus on dict.org for each word provided.
  • update FSF address included in the dictclient module.

Dunno

  • fix dunno.search to do regexp through a subprocess, to avoid potential DoS. See core changes for multiprocessing.

Factoids

  • updated to use sqlite3
  • add per-fact usage counter; add rank command to output facts sorted by usage; include usage count in info
  • sort order from search is alphabetic by key
  • suggest possible matches if asked-for factoid does not exist. only error if nothing is close according to our metrics.
  • normalize the factoids db, now keys/factoids can be linked to multiple factoids/keys. add alias command to add a key to a factoid.
  • merged upstream Fix this bug. Factoids.showFactoidIfOnlyOneMatch feature was broken when used off-channel.
  • factoids now get variable substitution through ircutils.standardSubstitute. So you can include the same variables in a factoid as you can in 'echo' output. Double the dollar signs if you need a literal "$<existingstandardvariable>" in your factoid (same as in echo). Use the '--raw' option to the whatis command to get the raw factoid content without substitution.

Filter

  • add unbinary command, as counterpart to the existing binary command.
  • fix rainbow command so it doesn't fail with numeric input. bug report

Format

  • add replace function, which does standard string substitution. The existing translate function only did character-by-character translation.

Google

  • for translate, allow translation with source-language autodetect (use 'auto' for source language), show detected language in output. helpful error if auto is used as destination language.
  • for translate, show detailed google error output, instead of the unhelpful "we broke google" message.
  • merged upstream for calc, fix it up so it works for currency conversions as well.
  • for calc, make the special-result matcher more generic.
  • for lucky, add the --snippet option, to show the google page text snippet for the returned result.

Karma

  • updated to use sqlite3

Later

  • fix the tell function to validate nick according to the RFC, and try to trim off tab-completion junk off the end. This reduces junk accumulation in the Later db.
  • now we send waiting messages also on user join, not just on privmsg. this behavior is configurable.
  • notes now have a default expiration period of 30 days, modifiable through config. should prevent cruft accumulation in the notes db.

Misc

  • merged upstream make the apropos command always include plugin name in output, even if only one command is found.
  • version now grabs the "latest available version" from the gribble git repository, rather than looking for the official supybot release version.
  • Fix tests for Misc.last so it passes properly
  • Fix Misc.last so that the --regexp argument pushes the regexp match through a subprocess. See core modification for multiprocessing.

MoobotFactoids

  • updated to use sqlite3.

Note

  • fix note.search to do regexp through a subprocess, to avoid potential DoS. See core changes for multiprocessing.

Owner

  • load and reload are now case-insensitive. This is really a core change, in src/plugin.py, not a change inside this plugin. But listing it here since this is where the user-visible change comes through.

Plugin

  • update plugin command doc string to reflect reality of what the command does. What it does is return the name of the plugin which will be used to execute a command, unless no default is found, in which case, return list of plugins containing command.
  • create a plugins command which always returns a list of all loaded plugins containing command supplied.

QuoteGrabs

  • updated to use sqlite3

Reply

  • add replies function, which makes multiple replies, if supybot.reply.oneToOne is false.

RSS

  • add config for number of items to spew to channel when adding a new feed to announce add
  • add config for default number of items to spew to channel when using the 'rss' command or a named rss feed command
  • add config for channel-specific whitelist and blacklist, for filtering out the rss announcements.
  • merged upstream fix bug where rss.announce.list would error if called off-channel without a channel argument

Scheduler

  • Make scheduled events persistent upon bot restart or Scheduler plugin reload.

Seen

  • Fix the saving of Seen.any.db.
  • Fix seen command so it accepts nick wildcards.

Services

  • Add some more strings indicating identification success.
  • Fix problem with some channels being mixed up between networks on startup, when noJoinsUntilIdentified is true.

Status

  • add processes command, the analogue of threads, to go along with the String.re changes.

String

  • re is now available to users at large, not just trusted users. This is due to the actual re.search call being done in a child process, and being limited to a configurable number of seconds of execution time. Thus the bot is no longer subject to DoS attack through specially crafted user regexps.
  • thread the levenshtein command, since it can take a nontrivial amount of time with longer inputs.

Todo

  • fix todo.search to do regexp through a subprocess, to avoid potential DoS. See core changes for multiprocessing.

Topic

  • merged upstream Now all non-read-only commands by default require the calling user to have chanop or halfop, or to have either the channel,op or channel,halfop capability, if channel mode is '+t'. Required capability list configurable through requireManageCapability config.
  • fix bug in invalid number error output. previously, for positive invalid numbers, output would reference number-1.
  • get command used to erroneously require capabilities. fixed.

Unix

  • Add ping command, calling the standard /bin/ping Unix command. Allow some common arguments, with sanity checks. (Thanks bc!)
  • Unix plugin is now threaded, as well as wtf and spell commands. (Thanks bc!)
  • Add call command, allowing the owner user to call an arbitrary system command. Use with care!

Utilities

  • add sample command, an interface to random.sample(). Randomly choose a sample of size n from arguments supplied.
  • add countargs command, which returns a count of the arguments supplied to it.

Web

  • add timeout config for web fetches, so it doesn't hang up for a long time when a site isn't responding.

core changes

  • merged upstream Fix $now display issue, add $utc and $gmt to show utc time, (in src.ircutils.standardSubstitute())
  • add Damerau-Levenshtein distance calculator to src.utils.seq (used in Factoids for approximate matching. will probably be handy elsewhere)
  • merged jamessan's fix from upstream fix this bug (thanks MTughan!) [jamessan made a better fix upstream, so i've merged that one instead.]
  • add sqlite3 checks into src.conf.Databases. this is needed for plugins using the plugins.DB() constructor along with sqlite3, for their databases.
  • merged upstream improve documentation for supybot-botchk script, noting that supybot.pidFile config must be set for it to work properly.
  • implement SSL connection support for the Socket driver (src/drivers/Socket.py)
  • plugin load/reload is now case-insensitive. (change in src/plugin.py.) This affects the Owner load and reload commands.
  • consolidated the version string to reside in one place, src/version.py, for ease of changing.
    • Also updated the release.py script to reflect this change.
    • Added a script (sandbox/version-commit) to automatically update the version with a datestamp upon commit.
  • Fixed banmask creation (src/ircutils.py) so that it works for no-subdomain hosts (patch from ProgVal)
  • add timeout argument to utils.web.getUrlFd (see addition of timeout config to web.fetch)
  • core now relies on the multiprocessing module, used for sandboxing the regexp matching to prevent DoS. See String.re, Misc.last, Note.search, Todo.search, Dunno.search. This means we now require python 2.6 or later.

Related

Wiki: Conditional_Plugin
Wiki: MessageParser_Plugin
Wiki: Supybot_Install_Guide
Wiki: Supybot_Resources

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.