JavascriptでSlackbotにリアクションをさせよう


本記事はJavaScriptでSlackbotにリアクションさせる方法を紹介するものです。

Pythonでリアクションをさせる方法については「Slackbotにリアクションをさせる〜PythonでのBot開発〜」をお読みください。

Slackの絵文字リアクション機能について

Slackの機能で自分や他の人に投稿したコメントに対してマークをつけることができます。
リアクションのマークをつけることで相手に同意や反対の意思を示すことが可能です。

下記のように一つのコメントに対して複数のリアクションをすることも可能です。

JavaScriptでSlackbotにリアクションをさせる方法

◆Botのリアクションの記述

JavaScriptでSlackbotにリアクションさせる場合の記述例は以下の通りです。

controller.hears(['ご機嫌いかが'], 'direct_message,direct_mention,mention', function(bot, message) {

    // nameに絵文字を指定する
    bot.api.reactions.add({
        timestamp: message.ts,
        channel: message.channel,
        name: 'smile',
    }, function(err, res) {
        if (err) {
            bot.botkit.log('Failed to add emoji reaction :(', err);
        }
    });
});

◆実行結果

このままだとかなり長いので関数化しておきましょう。

controller.hears(['ご機嫌いかが'], 'direct_message,direct_mention,mention', function(bot, message) {
    bot_react(bot, message, 'smile')
});

function bot_react(bot, message, emoji) {
    bot.api.reactions.add({
        timestamp: message.ts,
        channel: message.channel,
        name: emoji,
    }, function(err, res) {
        if (err) {
            bot.botkit.log('Failed to add emoji reaction :(', err);
        }
    });
}

1度に複数のリアクションをさせることも可能です。

controller.hears(['ご機嫌いかが'], 'direct_message,direct_mention,mention', function(bot, message) {
    bot_react(bot, message, 'smile')
    bot_react(bot, message, 'robot_face')
});

◆実行結果

絵文字について

Slack絵文字の代替文字を指定します。
代替文字は以下の画面の下に表示されている「::」で囲まれている文字です。

Slack内から打つ場合は、「:スマイル:」など日本語での記述も可能ですが、Botにリアクションさせる場合はNGです。

◆この記述はエラーとなる

@respond_to('^ご機嫌いかが?$')
def question_1(message):
    # 日本語はNG
    message.react('スマイル')

以上、JavaScriptでBotのリアクションをさせる方法についてでした。

◆関連記事
SlackbotをJavaScriptで作成しよう
Slackbotにリアクションをさせる(Python)