Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

SlackにTwitterの検索結果を投稿し続けるScala製ボットを作った

More than 3 years have passed since last update.

HubotでTwitterの検索結果をSlackに送りつつけるボットが、最近になって動かなくなってしましました。悲しい。直そうと思ってコードを見てみると最新のHubotだと非推奨の機能とかを使っていて面倒くさくなってしまったので、自分でScalaで作ってみました。

スクリーンショット 2017-04-07 20.34.31.png
コンソール上での見え方
スクリーンショット 2017-04-07 20.33.40.png
Slack上での見え方

こんな感じです。 Akka Actorで作っていて、SlackやTwitterとの通信エラーなどが起こった際にも比較的安定して動作をしてくれます。

ソースコード

https://github.com/sifue/twisearch_slackbot

こちらになります。自分でビルドしたりもできます。コードサイズも小さいのでScalaがわかる方は随時自分でいじって利用して下さい。

動かし方

とりあえず動かしたいという方は、
Java8 をインストールしてあることを確認して、
https://github.com/sifue/twisearch_slackbot のルートディレクトリにある twisearch_slackbot-assembly-X.X.jarをダウンロードしてください。

その後、application.confというテキストファイルを用意して

app {
  slackWebHookUrls = ["https://hooks.slack.com/services/hoge/fuga/hege"]
  intervalSec = 60
  keyword = "\"test\"OR\"テスト\"OR\"hoge\"OR\"fuga\""
  ignoreScreenNames = ["sifue_4466"]
  isSendRetweet = false
  messageFormat = "https://twitter.com/%1$s/status/%2$s"
  consumerKey = "consumerKey"
  consumerSecret = "consumerSecret"
  accessToken = "accessToken"
  accessTokenSecret = "accessTokenSecret"
  hubotWebHookUrl = ""
  hubotWebHookRoom = ""
}

以上を設定します。

各種設定項目について

slackWebHookUrl は、https://api.slack.com/slack-apps にてTwisearch SlackbotのアプリをAppとして作成して、WebHook Incomeを許可し、そこでWebHook URLを特定のチャンネルに対して作成してそれを利用して下さい。

スクリーンショット 2017-04-07 20.36.58.png
Slackのアプリ作成画面

各種トークンは、 https://dev.twitter.com/ より Twitter のアプリケーションを作成して、consumerKeyconsumerSecret を取得、accessTokenaccessTokenSecretは生成してから取得してください。 これらを設定します。

スクリーンショット 2017-04-07 20.38.29.png
twitterのアプリ作成画面

intervalSec は実行間隔、 isSendRetweet はツイートを無視するかのフラグ、 keyword は、検索キーワードなので 適宜 OR NOT AND を使って設定して下さい。

SlackはTwitterのURLを展開してくれるので、そのままツイートURLをメッセージフォーマットとしています。

無事application.confが書けたら、 twisearch_slackbot-assembly-X.X.jarと同じフォルダに置いて、

java -jar twisearch_slackbot-assembly-X.X.jar

で実行すればOKです。

目的のチャンネルに検索結果が投稿されるようになるかと思います。 検索キーワードは test にしておくと、すごくひっかかるのでそれで確認すると良いでしょう。確認できたら、自分で運用しているサーバーがあればバックグラウンド実行、 tmuxやscreenコマンドを利用した実行をして下さい。

Herokuにデプロイする際には、 Java用のProcfilepom.xmlを置いてjavaとして実行してあげれば良いですが、自分は無料のインスタンスでは動作を安定することができませんでした。 Dokkuでも同様に動作させることができると思います。ただ、運用しているサーバーがあればそこで動かすのが便利そうです。

では皆さん、ハッピーなSlackライフを!

sifue
N高等学校でプログラミングを教えているプログラマーで、学園のIT担当。「高校生からはじめる プログラミング」著者 ( https://www.amazon.co.jp/dp/4046019557/ ) 。 言語: Scala/JavaScript/Java ゲーム: LoL/フォトナ/クラロワ
https://www.soichiro.org/
dwango
Born in the net, Connected by the net.
https://dwango.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away