ある時、突然こんな要望をされて困った。
「猫」って発言されたらこの画像を表示したい!
※ 本当は「猫」ではありませんでしたが、猫でマスクしておきます。
まずは普通に応答
nekobot.coffee
module.exports = (robot) ->
robot.hear /(猫)$/i, (msg) ->
room = msg.envelope.room
if room == "image"
text = msg.match[1]
msg.send "#{text} の画像アップするよ"
画像をアップロード
curlにてアップしたい画像のpathとアップ先のchannelを指定
nekobot.coffee
module.exports = (robot) ->
robot.hear /(猫)$/i, (msg) ->
room = msg.envelope.room
if room == "image"
text = msg.match[1]
msg.send "#{text} の画像アップするよ"
# 下記を追加
filename = 'image/nya-o.png'
channel = msg.message.rawMessage.channel
exec "curl -F file=@#{filename} -F channels=#{channel} -F token=#{process.env.HUBOT_SLACK_TOKEN} https://slack.com/api/files.upload", (err, stdout, stderr) ->
if err
# 一応Errorのハンドリングしておく?
後は、該当のチャンネルでの 猫
発言をhubotが拾って指定された猫画像をSlackにアップロード
※画像サイズによってはアップロードに時間がかかります。
更に複数の画像をランダムで表示させたい
ということで、表示する画像の配列を作成して、 random
で取得してみる
nekobot.coffee
# 表示したい画像path
neko = ['nya-o.png','bow-wow.png','Cock-a-doodle-doo.png']
module.exports = (robot) ->
robot.hear /(猫)$/i, (msg) ->
room = msg.envelope.room
if room == "image"
text = msg.match[1]
msg.send "#{text} の画像アップするよ"
# 下記を追加
filename = msg.random neko
channel = msg.message.rawMessage.channel
exec "curl -F file=@#{filename} -F channels=#{channel} -F token=#{process.env.HUBOT_SLACK_TOKEN} https://slack.com/api/files.upload", (err, stdout, stderr) ->
if err
# 一応Errorのハンドリングしておく?
コレで 猫
に反応したら3種類のどれかの画像がアップします。
※ 連続で同じ画像ばっかりアップされたため、なかなか出なかった画像が当たり扱いされ、いつの間にかくじ引き機能として活躍されるしまつ。。。