Included Plugins

Will comes with batteries included, and already does a number of useful things - more are welcome via PR! Note that not all of these commands are listed in @will help - some are rare enough that they didn't make sense to add.

Here's what he does out of the box:



This plugin pings will once a minute at PUBLIC_URL, making sure his processes aren't idled in installations like heroku.


He's a robot. He should respond to ping. :)



This provides a web endpoint at /say/some-phrase that will will speak into DEFAULT_ROOM. Helpful for pay-no-attention-to-the-hand-behind-the-curtain demos.



Provides several admin-only commands for manipulating will's underlying storage. These methods are also case-sensitive, because they can do Bad Things.

Chat rooms

Provides a couple of methods for listing and updating will's internal chat room knowledge, and manipulating the current room.


Will has served as the devops team at a couple different companies, but we haven't yet been able to get the IP sorted to abstract and open-source those plugins. So, for the moment, he just includes a couple basics:

Emergency Contacts

Saves a set of emergency contacts for team members, and provides a way for anyone on the team to get them in, well, emergencies.

Github status

Github is a critical piece of infrastructure for most dev shops. When it's having troubles, it's good to know. This plugin checks github's status api, and alerts chat with the problem when they go down, and again when they're back up.

Heroku status

Heroku is also really widely used, and if you use it, when it's having troubles, it's good to know. This plugin checks heroku's status api, and alerts chat with the problem when they go down, and again they're back up.

Note: if you don't use heroku, remember you can always disable this plugin in


PagerDuty integration

In case if you have a PagerDuty account and the PD alerts are integrated with your HipChat server, you probably want this feature. You can acknowledge/resolve incidents using @will and what's more, you can set up a maintenance window as well!

If you've set both PAGERDUTY_SUBDOMAIN and PAGERDUTY_API_KEY and enabled the plugin in - since it's disabled by default - the plugin will work for you. Get one full access api key from

This plugin assumes that your PagerDuty e-mail address and your HipChat e-mail address are the same, this is how will associates your HipChat account with PagerDuty account.


You can acknowledge the ongoing incidents. You can do 3 things:

pd ack


You can resolve the acknowledged incidents. You can do 3 things:

pd ack


You can reassign one or more incidents to somebody else.

@will pd reassign [incident number 1] [incident number2] [mention name]: reassign one or more specific incidents.

pd reassign

Schedule maintenance window

You can schedule a maintenance window for a specific service. The last - hour - parameter is optional. The default value is 1 hour.

@will pd maintenance [service name] [hour(s)]h: Schedule a new maintenance window for x hours

pd maintenance


Will has personality, and we love that about him. The friendly module includes some nice, silly, and appreciative aspects to will that really rounds out his personality.

Good morning / Good night

Will responds to "good morning", and "good night" appropriately, if he hears it. If it's Friday, he'll even tell you to have a good weekend!


Saying hello is important.



A little politeness goes a long way.



We promised silly.


That's what she said.

Because seriously, bro. Read some awesome thought-provoking quotes, instead.

She Said


One day, you'll find yourself saying this. The response will make your week.



There are a number of fun-facing plugins. Check 'em out in the fun module or let them surprise you.




Lists all the plugin commands with docstrings, bundled by module.

Help, will

Programmer help

List all regexes for registered @hear and @respond_to decorators. This is what help used to be, and may be pulled in the near future.

Programmer help



If you want to shorten long URL using Bitly API, Will can do that for you in a few seconds:



If you've set a HANGOUT_URL, will will toss it in chat for you:


Image me

Sometimes, a picture is worth a thousand words.

Image me a crazy squirrel

Image me works out of the box, but may not in future releases (we're using a pretty hacky way to get search results.) If you rely on it, configure image me properly by setting the following two variables in or in your environment with the appropriate WILL_ prefix. Here are some instructions on where to obtain both.

Gif me

Like image me, but alive.

gif me cute kittens

Remind me

This saves our bacon every day. Timeboxes meetings, helps people remember appointments, and enforces self-control.

Remind me

Then, when it's 3pm, and I still haven't stopped coding to eat:

Remind me

Or, more practically,

Remind me

Remind somebody

You can also remind others as well.

Remind somebody

World time

We're a remote company. Maybe you are too. Or your clients are. Or the light/dark cycle of the world just fascinates you. If any of these are you, just ask Will to get the time in pretty much any city on earth. Even our globe-trotting CEO hasn't been able to stump him.

World time


Provides information about the release version of @will.


This module's all about web-facing content.

Home page

Will also includes a home page, so you can fire him, up, browse to his URL, and see his smiling face.

Home page

You now know everything about plugins. Maybe you're wondering about the finer points of config? Or perhaps, you're ready to deploy your will?