From 6b1dca48dd5ed036d6ff7bbd4730ee16bf68d8d7 Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Tue, 2 May 2017 18:40:40 +0200 Subject: [PATCH] Update README Remove all the generated stuff and add actually useful information for this particular bot. --- README.md | 215 ++++-------------------------------------------------- 1 file changed, 13 insertions(+), 202 deletions(-) diff --git a/README.md b/README.md index 23538b7..3f0700d 100644 --- a/README.md +++ b/README.md @@ -1,219 +1,30 @@ # hal8000 -hal8000 is a chat bot built on the [Hubot][hubot] framework. It was -initially generated by [generator-hubot][generator-hubot], and configured to be -deployed on [Heroku][heroku] to get you up and running as quick as possible. +hal8000 is a chat bot built on the [Hubot](https://hubot.github.com/) +framework. It's currently running in some channels on Freenode. -This README is intended to help get you started. Definitely update and improve -to talk about your own instance, how to use and deploy, what functionality he -has, etc! +### Running hal8000 locally -[heroku]: http://www.heroku.com -[hubot]: http://hubot.github.com -[generator-hubot]: https://github.com/github/generator-hubot + npm start -### Running hal8000 Locally +### Incoming webhooks in development -You can test your hubot by running the following, however some plugins will not -behave as expected unless the [environment variables](#configuration) they rely -upon have been set. +With [ngrok](https://ngrok.com) installed (and the ngrok binary in your PATH), +you can open an HTTP tunnel with: -You can start hal8000 locally by running: - - % bin/hubot - -You'll see some start up output and a prompt: - - [Sat Feb 28 2015 12:38:27 GMT+0000 (GMT)] INFO Using default redis on localhost:6379 - hal8000> - -Then you can interact with hal8000 by typing `hal8000 help`. - - hal8000> hal8000 help - hal8000 animate me - The same thing as `image me`, except adds [snip] - hal8000 help - Displays all of the help commands that hal8000 knows about. - ... + npm run ngrok ### Configuration -A few scripts (including some installed by default) require environment -variables to be set as a simple form of configuration. - -Each script should have a commented header which contains a "Configuration" -section that explains which values it requires to be placed in which variable. -When you have lots of scripts installed this process can be quite labour -intensive. The following shell command can be used as a stop gap until an -easier way to do this has been implemented. - - grep -o 'hubot-[a-z0-9_-]\+' external-scripts.json | \ - xargs -n1 -i sh -c 'sed -n "/^# Configuration/,/^#$/ s/^/{} /p" \ - $(find node_modules/{}/ -name "*.coffee")' | \ - awk -F '#' '{ printf "%-25s %s\n", $1, $2 }' - -How to set environment variables will be specific to your operating system. -Rather than recreate the various methods and best practices in achieving this, -it's suggested that you search for a dedicated guide focused on your OS. - -### Scripting - -An example script is included at `scripts/example.coffee`, so check it out to -get started, along with the [Scripting Guide](scripting-docs). - -For many common tasks, there's a good chance someone has already one to do just -the thing. - -[scripting-docs]: https://github.com/github/hubot/blob/master/docs/scripting.md - -### external-scripts - -There will inevitably be functionality that everyone will want. Instead of -writing it yourself, you can use existing plugins. - -Hubot is able to load plugins from third-party `npm` packages. This is the -recommended way to add functionality to your hubot. You can get a list of -available hubot plugins on [npmjs.com](npmjs) or by using `npm search`: - - % npm search hubot-scripts panda - NAME DESCRIPTION AUTHOR DATE VERSION KEYWORDS - hubot-pandapanda a hubot script for panda responses =missu 2014-11-30 0.9.2 hubot hubot-scripts panda - ... - - -To use a package, check the package's documentation, but in general it is: - -1. Use `npm install --save` to add the package to `package.json` and install it -2. Add the package name to `external-scripts.json` as a double quoted string - -You can review `external-scripts.json` to see what is included by default. - -##### Advanced Usage - -It is also possible to define `external-scripts.json` as an object to -explicitly specify which scripts from a package should be included. The example -below, for example, will only activate two of the six available scripts inside -the `hubot-fun` plugin, but all four of those in `hubot-auto-deploy`. - -```json -{ - "hubot-fun": [ - "crazy", - "thanks" - ], - "hubot-auto-deploy": "*" -} -``` - -**Be aware that not all plugins support this usage and will typically fallback -to including all scripts.** - -[npmjs]: https://www.npmjs.com - -### hubot-scripts - -Before hubot plugin packages were adopted, most plugins were held in the -[hubot-scripts][hubot-scripts] package. Some of these plugins have yet to be -migrated to their own packages. They can still be used but the setup is a bit -different. - -To enable scripts from the hubot-scripts package, add the script name with -extension as a double quoted string to the `hubot-scripts.json` file in this -repo. - -[hubot-scripts]: https://github.com/github/hubot-scripts - -## Persistence - -If you are going to use the `hubot-redis-brain` package (strongly suggested), -you will need to add the Redis to Go addon on Heroku which requires a verified -account or you can create an account at [Redis to Go][redistogo] and manually -set the `REDISTOGO_URL` variable. - - % heroku config:add REDISTOGO_URL="..." - -If you don't need any persistence feel free to remove the `hubot-redis-brain` -from `external-scripts.json` and you don't need to worry about redis at all. - -[redistogo]: https://redistogo.com/ - -## Adapters - -Adapters are the interface to the service you want your hubot to run on, such -as Campfire or IRC. There are a number of third party adapters that the -community have contributed. Check [Hubot Adapters][hubot-adapters] for the -available ones. - -If you would like to run a non-Campfire or shell adapter you will need to add -the adapter package as a dependency to the `package.json` file in the -`dependencies` section. - -Once you've added the dependency with `npm install --save` to install it you -can then run hubot with the adapter. - - % bin/hubot -a - -Where `` is the name of your adapter without the `hubot-` prefix. - -[hubot-adapters]: https://github.com/github/hubot/blob/master/docs/adapters.md +`run.sh` (which is used for `npm start`) has some default values for the +required ENV vars. Change it according to your needs, or use custom ENV vars +with the commands. ## Deployment - % heroku create --stack cedar - % git push heroku master - -If your Heroku account has been verified you can run the following to enable -and add the Redis to Go addon to your app. - - % heroku addons:add redistogo:nano - -If you run into any problems, checkout Heroku's [docs][heroku-node-docs]. - -You'll need to edit the `Procfile` to set the name of your hubot. - -More detailed documentation can be found on the [deploying hubot onto -Heroku][deploy-heroku] wiki page. - -### Deploying to UNIX or Windows - -If you would like to deploy to either a UNIX operating system or Windows. -Please check out the [deploying hubot onto UNIX][deploy-unix] and [deploying -hubot onto Windows][deploy-windows] wiki pages. - -[heroku-node-docs]: http://devcenter.heroku.com/articles/node-js -[deploy-heroku]: https://github.com/github/hubot/blob/master/docs/deploying/heroku.md -[deploy-unix]: https://github.com/github/hubot/blob/master/docs/deploying/unix.md -[deploy-windows]: https://github.com/github/hubot/blob/master/docs/deploying/unix.md - -## Campfire Variables - -If you are using the Campfire adapter you will need to set some environment -variables. If not, refer to your adapter documentation for how to configure it, -links to the adapters can be found on [Hubot Adapters][hubot-adapters]. - -Create a separate Campfire user for your bot and get their token from the web -UI. - - % heroku config:add HUBOT_CAMPFIRE_TOKEN="..." - -Get the numeric IDs of the rooms you want the bot to join, comma delimited. If -you want the bot to connect to `https://mysubdomain.campfirenow.com/room/42` -and `https://mysubdomain.campfirenow.com/room/1024` then you'd add it like -this: - - % heroku config:add HUBOT_CAMPFIRE_ROOMS="42,1024" - -Add the subdomain hubot should connect to. If you web URL looks like -`http://mysubdomain.campfirenow.com` then you'd add it like this: - - % heroku config:add HUBOT_CAMPFIRE_ACCOUNT="mysubdomain" - -[hubot-adapters]: https://github.com/github/hubot/blob/master/docs/adapters.md - -## Restart the bot - -You may want to get comfortable with `heroku logs` and `heroku restart` if -you're having issues. +hal8000 is deployed by running Chef Solo against `dev.kosmos.org` with the +cookbooks from our (private) [GitLab repo](https://gitlab.com/kosmos/chef). ## House Rules [Contributor Code of Conduct](http://contributor-covenant.org/version/1/2/0/) (TL;DR: Be excellent to each other.) -