前置き
一つのマシン上で複数のbotを動かしたい欲求に駆られた。例えば、チャンネルAではbotAを、チャンネルBではbotBとして、それぞれのbotで反応するキーワードが違うってことをやりたかった。想定環境はslack。
設定
通常Slack用のHubotを動かす場合、HUBOT_SLACK_TOKEN
という環境変数で設定するように促されるが、コレをbotごとに違う環境変数で設定しておく。
export HUBOT_BOTA_SLACK_TOKEN=xoxb-xxxxxxxxxx-xxxxxxxxxxxxxx
export HUBOT_BOTB_SLACK_TOKEN=xoxb-xxxxxxxxxx-xxxxxxxxxxxxxy
その上で、bin/hubot
を編集。
# 元々書いてあるやつ
#exec node_modules/.bin/hubot --name "myhubot" "$@"
# 次のように変更する
HUBOT_SLACK_TOKEN=$HUBOT_BOTA_SLACK_TOKEN \
exec node_modules/.bin/hubot --name "myhubot" "$@"
同じようにbotBのbin/hubot
も編集して
HUBOT_SLACK_TOKEN=$HUBOT_BOTA_SLACK_TOKEN \
exec node_modules/.bin/hubot --name "myhubot" "$@"
実行
それぞれのディレクトリで bin/hubot
を実行することで、一つのマシン上で複数のbotを動かせた。
おわり
それぞれのbotで参加しているチャンネルが違う=hubotが取得できるメッセージが違うので複数動かすしか無いと思ってこの対応にした。他にいい方法あったら教えてください。