コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

Hubotメモでも残しておく

僕には会話する友人がいないのでbotをつくるしかできないのです

はい、おはようございます僕です。今日もメモ投稿になります。どうして僕はメモだけのためにブログを書いてしまうのか。あとで見返すとかそういう用途ならいいんだけどこんなん書いても僕見返さないんですよねw。だからマジでなんでブログでこんなことやるのか謎。まあいいや。今日のメモはSlackボットの作成メモになります。なんでやるのかというとなんとなくです。ここ最近急にいじりだしたGlitchに可能性を見出してきたのでちょっとしたお試しサーバーとして遊びたくなったってのが理由です。

てなわけで準備します。
hubot.github.com
Hubot使います。これが何かというとBot制作用のフレームワークです。これ単品でもなんやかんやしてできるんですが、そのなんやかんやが面倒なので以下のひな形集を使って楽をします。

関連
GitHub - hubotio/generator-hubot: Hubot generator for Yeoman
The web's scaffolding tool for modern webapps | Yeoman

導入とかは別にいいや。npm installとか使って適当にいれてやってください。

# slackテンプレートの作成
$yo hubot --adapter=slack

とりあえずコレで……。

んで、ひな形ができたらScript部分にコードを書いてこんなん作ります。
GitHub - Andou666/hubot-test

# 動作確認
$env HUBOT_SLACK_TOKEN=XXXX ./bin/hubot --adapter slack

んで上のようなコマンドを叩いてやると動きます。

こんな感じのやつが……。
f:id:andron:20200418080028p:plain




さて、今までBotとか作ってもそれを動かしてくれるサーバーないし面倒くさいとか思ってたんですよ。だけどGlitchならそういうの良い感じにいけるかもとか思ったんでそこに置きます。はい。package.jsonのscripts部分に上のコードを書いてやります。
package.json

...
"scripts": {
    "start": "source .env && ./bin/hubot --adapter slack"
  }
...

起動時の設定はこんな感じで…。ただHUBOT_SLACK_TOKENはみえるところに置きたくないので.envの方から引っ張ってくるように書き換えます*1

そういうえばGlitchに挙げてるpackage.jsonには「yo」とか「generator-hubot」も一緒にあげちゃってるけども、あれいらないかも……。コードはGitHubからの引用なんですけど「permission denied」とかでて色々いじってたやつが残ってます。解決策よくわからなかったからターミナルから直接関係するパーミッションいじって解決したw。

はい。そんでこれで動かせます。
f:id:andron:20200418080015p:plain
やったー!


注意点
・サイトが動いてなければ5分で停止する
・12時間以上稼働すると停止する

以上がGlitchでの利用上の注意です。まあ、無料なんでこの辺りは仕方ない。用途としては僕がSlackにログインしているときだけ起動する補助Botみたいな使い方ぐらいの想定しかしてないのでまあそれでいいかなって……。定期的に起こしにいくって裏技もあったりするんだけどサーバーに負荷与えるようなやり方はあんまりしたくないのでとりまこれで。これでチャットボットつくってあそべるー!



ちなみに余談ですが今回ハローワールドレベルのものつくって飽きたのはBolt使えばもっと簡単にできるよってのを知ったからです。これとかいいかもしれない。公式にチュートリアルついてるし……。
github.com


さて、これからちゃんとした機能を追加していきたいところ。

*1:.envに書くことでトークンなどの外部に見せたくない情報は隠してくれるらしい