From MozillaWiki
Jump to: navigation, search

Mr. Giggles

mrgiggles is an IRC bot originally created for monitoring and reporting on the results of a static analysis for GC (garbage collection) rooting hazards. It has grown beyond this original purpose, as such things often do.


For now, just ask him.

 /msg mrgiggles help

Areas of Functionality (aka Plugins)

  • analysis: Reporting on static rooting hazard analysis results for SpiderMonkey engine (mrgiggles: help analysis)
  • treewatch: Watching the tree for openings/closures (mrgiggles: tell me when inbound opens or mrgiggles: help treewatch)
  • pun: Telling puns (mrgiggles: pun)
  • map: Timezone lookup (mrgiggles: what time is it in Perth?)
  • mqext: Suggest reviewers or bug components for patches to a given file (mrgiggles: who has reviewed nsJSEnvironment.cpp?)
  • knowledge: Return information about the interpretation of hex values as nsresult codes, JS::Values, or poison patterns (mrgiggles: what is 0xe5e5e5e5e5f7?)
  • histoire: keep a record of what you have been working on (confession: wrote patch for bug 5432100)
  • demangle: demangle C++ symbols for *nix or Windows; no Rust yet, sorry (mrgiggles: demangle _ZZN2js3jit11X86Encoding6CCNameENS1_9ConditionEE5names)


The source code may be found at

Note that you will almost certainly want a file. (I'm not sure if it still works without one, but probably not.) Not so basic example:

 config = {
   'nick': 'drchuckles',
   'server': "",
   'port': 6667,
   'password': "...",
   'bitly_token': 'e4718deadbeefdeadbeef2422078f51d2cc41a4c',
   'poll-interval': 10, # Seconds
   'debug-channel': '#my-debug-channel',
   'report-channels': [ '#my-debug-channel', '#mychannel' ],
   'nondebug-channels': [ '#mychannel', '#theirchannel' ],
   'var-path': "/home/tweety/var/{nick}",
   'plugins': {
       'treewatch': { 'class': 'TreeWatchPlugin',
                      'poll-interval': 180 },
       'mqext': { 'class': 'MQExtPlugin' },
       'pulse': {
           'class': 'PulsePlugin',
           'server': '',
           'port': 5672,
           'user': 'mrgiggles',
           'password': '...',
           'exchanges': {
               'build': 'exchange/build',
           'queues': {
               'build': 'queue/{user}/builds',
       'pun': { 'class': 'PunPlugin' },