Slackで特定の文字列に対してbotにEmojiリアクションさせる


概要

WEB+DB PRESS Vol.91のBotkit特集を読んだところ、Botkitを使うと特定の文字列に対してbotが絵文字でリアクションする「Emojiリアクション」が簡単に設定できるようなので試してみました。

ビールが含まれる投稿に対してを付ける

開発環境の構築方法やbotのEmojiリアクションの設定方法等はWEB+DB PRESSの特集を読み参考にしました。

import Botkit from 'botkit'

const ctrl = Botkit.slackbot({
  debug: false
});
const bot = ctrl.spawn({
  token: process.env.token
}).startRTM();

ctrl.hears(
  ['beer', 'ビール'], ['ambient'],
  (bot, message) => {
    bot.api.reactions.add({
      timestamp: message.ts,
      channel: message.channel,
      name: 'beers',
    }, (err, res) => {
      if (err) {
        bot.log("Failed to add emoji reaction", err);
      }
    });
  }
);

結果

Botkitおもしろい

hears関数の第2引数について

WEB+DB PRESSのサンプルコードで紹介されているhears関数の第2引数へのbotに反応して欲しい呼びかけの種類の渡し方では上手く動きませんでした。botkitのリポジトリを参考に以下のように修正したところ上手く動きました。

修正前
'direct_message, direct_mention, mention'
修正後
['direct_message', 'direct_mention', 'mention']

参考