Help us understand the problem. What is going on with this article?

Hubot のインストールと Hello World

More than 3 years have passed since last update.

初めて Hubot (読み:ヒューボット)に触れたのは 2 年前。
簡単なスクリプトを書いて実行してみただけで、それ以降触っていなかった。
久しぶりに、インストールから Hello World までを実施してみる。

なお、以下の記事を参考にさせていただいた。

第2回 インストールとHello World:GitHub社謹製! bot開発・実行フレームワーク「Hubot」|gihyo.jp … 技術評論社

環境

Ubuntu 16.04.1 LTS (VMware Workstation 12 Player 上に環境構築)

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"

パッケージの更新

$  sudo apt-get update
$  sudo apt-get upgrade

インストール

Node.jsとnpm

$ sudo apt-get install nodejs npm

バージョン確認

$ node -v
v4.2.6
$ npm version
{ npm: '3.5.2',
  ares: '1.10.1-DEV',
  http_parser: '2.5.0',
  icu: '55.1',
  modules: '46',
  node: '4.2.6',
  openssl: '1.0.2g-fips',
  uv: '1.8.0',
  v8: '4.5.103.35',
  zlib: '1.2.8' }

Hubot

$ sudo npm install -g hubot coffee-script

バージョン確認

$ npm list -g hubot coffee-script
/usr/local/lib
├── coffee-script@1.12.1 
└─┬ hubot@2.19.0 
  └── coffee-script@1.6.3 

動作確認

“myhubot” という名前でひな形を作ろうと、コマンドを入力すると、次のメッセージが表示された。

$ hubot --create myhubot
'hubot --create' is deprecated. Use the yeoman generator instead:
    npm install -g yo generator-hubot
    mkdir -p myhubot
    cd myhubot
    yo hubot
See https://github.com/github/hubot/blob/master/docs/index.md for more details on getting started.

言われた通りにする。

$ sudo npm install -g yo generator-hubot

バージョン確認

$ npm list -g yo generator-hubot
/usr/local/lib
├── generator-hubot@0.4.0 
└── yo@1.8.5 

ひな形を作成

$ mkdir -p myhubot
$ cd myhubot
$ yo hubot

以下の項目を設定

  • Owner : suppy193 <メールアドレス>
  • Bot name : myhubot
  • Description : My first hubot
  • Bot adapter : campfire (デフォルトの設定)

以下のようなディレクトリ、ファイルが作成される

$ ls -la
合計 52
drwxrwxr-x   5 suppy193 suppy193 4096 Dec 12 09:53 .
drwxr-xr-x  20 suppy193 suppy193 4096 Dec 12 09:53 ..
-rw-r--r--   1 suppy193 suppy193  197 May 20  2016 .editorconfig
-rw-r--r--   1 suppy193 suppy193   39 May 20  2016 .gitignore
-rw-r--r--   1 suppy193 suppy193   27 Dec 12 09:53 Procfile
-rw-r--r--   1 suppy193 suppy193 7844 Dec 12 09:53 README.md
drwxrwxr-x   2 suppy193 suppy193 4096 Dec 12 09:53 bin
-rw-rw-r--   1 suppy193 suppy193  213 Dec 12 09:53 external-scripts.json
-rw-rw-r--   1 suppy193 suppy193    2 Dec 12 09:53 hubot-scripts.json
drwxrwxr-x 107 suppy193 suppy193 4096 Dec 12 09:53 node_modules
-rw-rw-r--   1 suppy193 suppy193  573 Dec 12 09:53 package.json
drwxrwxr-x   2 suppy193 suppy193 4096 Dec 12 09:53 scripts

Hubot を起動

$ bin/hubot
myhubot> [Mon Dec 12 2016 09:55:37 GMT+0900 (JST)] WARNING Loading scripts from hubot-scripts.json is deprecated and will be removed in 3.0 (https://github.com/github/hubot-scripts/issues/1113) in favor of packages for each script.

Your hubot-scripts.json is empty, so you just need to remove it.
[Mon Dec 12 2016 09:55:37 GMT+0900 (JST)] ERROR hubot-heroku-alive included, but missing HUBOT_HEROKU_KEEPALIVE_URL. `heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=$(heroku apps:info -s  | grep web-url | cut -d= -f2)`
[Mon Dec 12 2016 09:55:37 GMT+0900 (JST)] INFO hubot-redis-brain: Using default redis on localhost:6379

Enter キーを押すとプロンプトが表示される。

myhubot> 

ヘルプを表示

myhubot> myhubot help
myhubot> Shell: myhubot adapter - Reply with the adapter
myhubot animate me <query> - The same thing as `image me`, except adds a few parameters to try to return an animated GIF instead.
myhubot echo <text> - Reply back with <text>
myhubot help - Displays all of the help commands that Hubot knows about.
myhubot help <query> - Displays all help commands that match <query>.
myhubot image me <query> - The Original. Queries Google Images for <query> and returns a random top result.
myhubot map me <query> - Returns a map view of the area returned by `query`.
myhubot mustache me <url|query> - Adds a mustache to the specified URL or query result.
myhubot ping - Reply with pong
myhubot pug bomb N - get N pugs
myhubot pug me - Receive a pug
myhubot the rules - Make sure hubot still knows the rules.
myhubot time - Reply with current time
myhubot translate me <phrase> - Searches for a translation for the <phrase> and then prints that bad boy out.
myhubot translate me from <source> into <target> <phrase> - Translates <phrase> from <source> into <target>. Both <source> and <target> are optional
ship it - Display a motivation squirrel

Enter キーを押すとプロンプトが表示される。

myhubot> 

デフォルトで作成されているスクリプトの "ping" を実行

myhubot> myhubot ping
myhubot> PONG

"PONG" と返答
Enter キーを押すと、プロンプトが表示される

Hubot を終了

myhubot> exit

初めから scripts ディレクトリにあるのは、example.coffee のみである。
このファイルには、多くのサンプルが含まれている。

$ ls -l scripts
合計 4
-rw-r--r-- 1 suppy193 suppy193 3360 May 20  2016 example.coffee

hello スクリプト

以下のスクリプトを作成する

./scripts/hello.coffee
# Description:
#   Hubotと挨拶
#
# Commands:
#   hubot hello - Reply with hello
#
# Author:
#   suppy193

module.exports = (robot) ->
  robot.respond /HELLO$/i, (msg) ->
    msg.send "HELLO"

Hubot を起動して、 hello.coffee を読み込む

$ bin/hubot

コマンドを実行

myhubot> myhubot hello
myhubot> HELLO

コマンドに対して、"HELLO" と返答する。

ヘルプには、スクリプトの "Commands:" に記述した内容が追記されている。

myhubot> myhubot help
myhubot> Shell: myhubot adapter - Reply with the adapter
(略)
myhubot echo <text> - Reply back with <text>
myhubot hello - Reply with hello
myhubot help - Displays all of the help commands that Hubot knows about.
(略)

以上。

suppy193
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした