LoginSignup
0

More than 3 years have passed since last update.

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

Posted at

本記事は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')
});

◆実行結果
リアクションを2つする

絵文字について

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

リアクション一覧

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

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

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

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0