LoginSignup
1
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-04-07

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ライフを!

1
4
0

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
1
4