Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8691

Slackで匿名で投稿できるチャンネルを作ろうとしたら少しだけ苦労した話

$
0
0

はじめに

研究室でSlackを導入してから2年くらい経ちました。
話題でチャンネルを分けれるので非常に便利です。

雑談用のチャンネルもあるのですが、特定の人ばかり話していて盛り上がりに欠けます。
「匿名ならみんな発言してくれるかも」と思ったのがきっかけで、匿名用のチャンネルを作りました。

Googleで検索したら3年前のQiitaの以下の記事がヒットしました。
「超簡単にSlackで匿名の意見を投稿できるようにする」 @shibukk

「超簡単」とありますが、記事通りにやっても上手くいかず、少しだけ苦労しました。
BotKitのバージョンが上がって中身が変わっていたのが原因でした。

修正した部分を自分の備忘録としてまとめておきます。

実行環境はUbuntu16.04。
node.js, javascriptが動けばどこでも大丈夫なはずです。

SlackのBotの取得

ここは本家と一緒です。
「Botを追加する」

ここをクリックすると、現在ログインしているワークスペースでBotを作ることができます。
(「ワークスペースの管理者」じゃないと作れないかも・・・)

今回はBotの名前を"anonymous_bot"にします。

API Tokenを後で使うのでコピーしておいてください。
漏れると悪用される恐れがあるので扱いには注意してください。(もしもの場合は再発行してください)

チャンネルIDをの取得

ここから本家と手順が少し変わります。

以下のURLから匿名で会話したいチャンネルのIDを探してください。
https://slack.com/api/channels.list?token=さっき取得したAPI_Token

ちなみにチャンネル以外にも、特定のユーザーやプライベートチャンネルもできます。
詳しくは本家を参考にしてください。

BotKitのインストール

次にBotKitをインストールします。
以下の手順に従ってください。

//ディレクトリの作成
$ cd ~
$ mkdir slack_anonymous_bot 
$ cd slack_anonymous_bot

//botkitをclone
$ git clone https://github.com/howdyai/botkit.git
$ cd botkit

//branchを移動
$ git checkout origin/legacy 

//インストール
$ npm install

//もしインストールできなかったら・・・
$ npm audit fix
$ npm install

~/botkit/example/slack_bot.js が生成されていれば成功です。

プログラムの作成

以下の手順に従ってください。

//ディレクトリの移動
$ cd ~
$ cd slack_anonymous_bot/botkit/

//anonymous_bot.jsの作成
$ touch anonymous_bot.js

anonymous_bot.jsに以下のコードをコピペしてください。

anonymous_bot.js
varBotkit=require("./lib/Botkit.js");//パス注意varos=require("os");varcontroller=Botkit.slackbot({debug:true,});varbot=controller.spawn({token:"先ほど取得したAPI_TOKEN"}).startRTM();controller.on("direct_message",(bot,message)=>{varnow=newDate();//時刻の取得varuser_name="名無しさん: "+now.getFullYear()+"/"+(now.getMonth()+1)+"/"+now.getDate()+"/ "+now.getHours()+":"+now.getMinutes()+":"+now.getSeconds();bot.reply(message,"匿名で投稿しました.");bot.startConversation({channel:"先ほど取得したチャンネルID"},(err,convo)=>{varsend_message={type:"message",channel:"先ほど取得したチャンネルID",text:message.text,username:user_name,thread_ts:null,reply_broadcast:null,parse:null,link_names:null,attachments:null,unfurl_links:null,unfurl_media:null,icon_url:null,icon_emoji:":robot_face:",as_user:true}convo.say(send_message);});});

スクリプトの実行方法

//デバッグしたいときは
$ cd ~/slack_anonymous_bot/botkit
$ node anonymous_bot.js

//通常時
$ cd ~/slack_anonymous_bot/botkit
$ forever start slack_bot.js
$ forever stop slack_bot.js ←止めたい場合

実行結果

Botが起動している間は、Botの名前の横の○が緑色になります。
Screenshot from 2019-12-15 02-18-28.png

anonymous_botにDMを送ると一瞬で返事が来て、
Screenshot from 2019-12-15 02-17-33.png

チャンネルIDを登録したチャンネルで匿名で投稿されます。(チャンネルのアプリにanonymous_botを追加するのをお忘れなく)
Screenshot from 2019-12-15 02-15-26.png

終わりに

無事に匿名で発言できるようになりました。
研究室のメンバーにも好評でした。
(若干チャンネルが荒れましたが・・・)


Viewing all articles
Browse latest Browse all 8691

Trending Articles