Edited at

slack用hubot作成時のメモ

More than 1 year has passed since last update.

とりあえず、メンションしたらランダムで何かを返してくれるbotでも作る。


開発環境の準備


vagrant

  config.vm.box = "centos/7"

config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
end


node v8指定

curl -sL https://rpm.nodesource.com/setup_8.x | bash -

yum install -y nodejs gcc-c++ make
npm install -g jsfmt sails node-dev pm2
npm install -g hubot hubot-slack yo generator-hubot coffee-script grunt-cli bower coffe-script
npm update


herokuも準備

npm install -g heroku-cli


アプリ用のユーザを作成

rootで作ると権限関係で怒られるっぽい

useradd huboter

su - huboter


アプリ作成


テンプレ作る

mkdir rbot

cd rbot
yo hubot
... (適当に入力)
Bot adapter: (campfire) slack
... (適当に入力)


スクリプト作成


rbot.coffee

random = (n) -> Math.floor(Math.random() * n)

module.exports = (robot) ->
robot.hear /@rbot/i, (msg) ->
words = [
'なぁに?',
'見てるぞ',
'いくら出す?',
'誠意',
'誠意だよ誠意'
]
result = words[random(5)]
msg.send "#{result}"


slack側設定

app - hubot を追加し名前(rbot)などをセット。APIトークンを控えておく。


herokuへ

heroku login

heroku create rbot
heroku git:remote -a rbot
git init
git add .
git commit -m "first commit"
git push heroku master

と、そのままpushしようとしたら下記のエラー

[huboter@localhost rbot]$ git push heroku master

Counting objects: 20, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (17/17), done.
Writing objects: 100% (20/20), 17.90 KiB | 0 bytes/s, done.
Total 20 (delta 1), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Node.js app detected
remote:
remote: -----> Creating runtime environment
remote:
remote: NPM_CONFIG_LOGLEVEL=error
remote: NPM_CONFIG_PRODUCTION=true
remote: NODE_VERBOSE=false
remote: NODE_ENV=production
remote: NODE_MODULES_CACHE=true
remote:
remote: -----> Installing binaries
remote: engines.node (package.json): 0.10.x
remote: engines.npm (package.json): unspecified (use default)
remote:
remote: Resolving node version 0.10.x...
remote: Downloading and installing node 0.10.48...
remote: Detected package-lock.json: defaulting npm to version 5.x.x
remote: Bootstrapping npm 5.x.x (replacing 2.15.1)...
remote:
remote: /tmp/build_869d142be7596a803ffd10a84edac8f4/.heroku/node/lib/node_modules/npm/lib/utils/unsupported.js:27
remote: console.error(`a bug known to break npm. Please update to at least ${r
remote: ^
remote: SyntaxError: Unexpected token ILLEGAL
remote: at Module._compile (module.js:439:25)
remote: at Object.Module._extensions..js (module.js:474:10)

なにやら、package.jsonで指定されているnodeとnpmのバージョンを何とかしようとしてエラーになっている模様。

んじゃとりあえず現状の環境のnodeとnpmのバージョン指定しておけばいいんじゃね?と下記の様に修正したら解消。


package.json抜粋(元)

  "engines": {

"node": "0.10.x"
}


package.json抜粋(修正版)

  "engines": {

"node": "8.9.1",
"npm": "5.5.1"
}


slackと繋ぐための環境変数を指定する(heroku側のsettingでも良い)

heroku config:set HUBOT_SLACK_TOKEN=(控えておいたAPIトークン)

heroku config:set HUBOT_SLACK_BOTNAME=rbot