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.
- @will How big is the db?: Lists the db size in human-friendly units.
- @will SERIOUSLY. Clear ____: Clears a key from the storage
- @will SERIOUSLY. REALLY. Clear all keys.: Clears everything from storage. Will will definitely not work after this without a restart, and will tell you so.
- @will Show me the storage for ____: Shows the raw storage value for a given key.
Provides a couple of methods for listing and updating will's internal chat room knowledge, and manipulating the current room.
- @will what are the rooms?: List the rooms he knows about, including their hipchat IDs.
- @will who is in this room?: List all the participants of the room he's in, including their name and mention name.
- @will update the room list: Get a new list of rooms from the chat server.
- @will new topic ____: Set the room topic.
Will is our devops team at GreenKahuna, and in the long term, we plan to abstract and include our stack deployer as a plugin. For the moment, he just includes a couple basics:
Saves a set of emergency contacts for team members, and provides a way for anyone on the team to get them in, well, emergencies.
- @will set my contact info to ____: Accepts a multi-line string with whatever contact info you want to provide.
- @will contact info: Lists contact info for all the team members who have provided it.
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 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
PLUGIN_BLACKLIST = [ "will.plugins.devops.heroku_is_up", ]
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_API_KEY and enabled the plugin in
config.py - since it's disabled by default - the plugin will work for you. Get one full access api key from https://YOURSUBDOMAIN.pagerduty.com/api_keys.
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:
- @will pd ack: Acknowledge all open incidents assigned to you
- @will pd ack!: Acknowledge all open incidents
- @will pd ack [incident number 1] [incident number 2]: Acknowledge one or more specific incidents
You can resolve the acknowledged incidents. You can do 3 things:
- @will pd resolve: Resolve all acknowledged incidents assigned to you
- @will pd resolve!: Resolve all acknowledged incidents
- @will pd resolve [incident number 1] [incident number 2]: Resolve one or more specific incidents
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.
Schedule maintenance window
You can schedule a maintenance window for a specific service. The last - hour - parameter is optional. The default value is
@will pd maintenance [service name] [hour(s)]h: Schedule a new maintenance window for x hours
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.
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.
List all regexes for registered
@respond_to decorators. This is what help used to be, and may be pulled in the near future.
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:
Sometimes, a picture is worth a thousand words.
image me, you'll need to set the following two variables in
config.py or in your environment with the appropriate
WILL_ prefix. Here are some instructions on where to obtain both.
- Go to the Google Developers Console.
- From the menu in the top left, choose
API Manager -> Credentials.
Create credentialsfrom the drop down, then
API Key, that's the key you need here.
- Optionally, give the key a suitable human-readable name so it looks nice in the list e.g.
- Setup a custom search engine (CSE) if you don't already have one.
- You'll need to provide a site for the CSE to search - just input anything, so the wizard can create the CSE.
- Type something useful like
Willin the name field and create the CSE.
- Edit the settings for the CSE you just created, and in the
Sites to searchsection, change the drop-down to
Search the entire web but emphasize included sites.
- Delete the "anything" site you added two steps ago, to clean it up.
- In the
Detailssection, click the
Search engine IDbutton, and copy the ID which you need here.
This saves our bacon every day. Timeboxes meetings, helps people remember appointments, and enforces self-control.
Then, when it's 3pm, and I still haven't stopped coding to eat:
Or, more practically,
You can also remind others as well.
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,
- Get a free
WORLD_WEATHER_ONLINE_V2_KEYfrom world weather online.
- Get the time in pretty much any city on earth. Even our globe-trotting CEO hasn't been able to stump him.
Provides information about the release version of @will.
- @will version: Show the current running version.
This module's all about web-facing content.
Will also includes a home page, so you can fire him, up, browse to his URL, and see his smiling face.