ゲレの工房

ゲーム好きの中の人が、自分が作りたいアプリを作る記録です

雑記:discordとIFTTTを使ってTwitterのハッシュタグ監視Botを作ってみた


スポンサーリンク


短期的に気になるハッシュタグTwitterの公式アプリで見るのに十分なのですが、長期的に見続けたいハッシュタグが複数ある場合には不便だったりします。また、discordはゲームとかで使っているけど、自分のサーバ立てたりしたことない人も多いのでは?

ここは上手くdiscord(とIFTTT)を活用して良いTwitterライフを送ってみるのはどうでしょうか?しかも無料で!

参考サイト

今回はこのサイトを参考に作業を行いました。
blog.k-san.info

今回やることの概要

簡単に仕組みを説明します。

  • IFTTTが定期的にTwitterの検索を行う
  • IFTTTが該当するツィートを検索出来たら、Webhook経由でdiscordに通知する
  • discordに設定したBotがWebhook経由の通知を受け取り、テキストチャンネルに書きこむ

という流れです。

やり方

IFTTTの説明

そもそもIFTTTってどんなサービス?

IFTTTとは、複数のサービスをプログラミング無しで繋げるサービスを行っています。今回はTwitterとdiscordをWebhookを通じて連携するために、TwitterからdiscordのWebhookを叩くことを担当してもらいます。

Every thing works better together - IFTTT
f:id:gelehrtecrest:20190415103636p:plain

じゃぁWebhookって何?

Webhookも各種サービスをつなぐための仕組みの一つです。今回はdiscordがWebhookの叩き口をURLとして提供するようにします。IFTTTにこのURLを叩いてもらうと連携ができます。
参考サイトのURLも貼っておきます。
kintone-blog.cybozu.co.jp

IFTTTの設定方法(その1)

Sign up

まずIFTTTのページを開き、Sign up(会員登録)してください。メールアドレスやその他SNSアカウントで登録可能のようです。

Every thing works better together - IFTTT

Appletを作る

Appletというのが今回接続する仕組みの一つの単位だと思ってください。Sign upしたら右上にアカウント名が出ると思います。そのアカウント名をクリックすると、New Appletというボタンが出てくると思います。これをクリックします。
f:id:gelehrtecrest:20190415104459p:plain

If this then that の thisを設定する

「If this then that」これの頭文字を取ったのがIFTTTの名前の由来です。その単語の通り「もしthisが発生した時、thatを行う」という仕組みを作ることになります。ここではまずthis部分を作ります。
f:id:gelehrtecrest:20190415104737p:plain

this をクリックすると、thisに登録できるサービス一覧が出てきます。
f:id:gelehrtecrest:20190415104816p:plain

多くのサービスが選択可能になっています。今回はTwitterを使いますので、Twitterをクリックしてください。すると「Twitterでどのようなことが起きた時に行動を起こすか」というトリガーの選択肢が出てきます。今回は「New tweet from search」を選びます。
f:id:gelehrtecrest:20190415105012p:plain
要するに、ツィートを検索して、検索結果として新しいツィートが見つかったら行動するというトリガーを選びます。

ルールを選ぶと、細かい設定を行えます。
f:id:gelehrtecrest:20190415105235p:plain
今回は検索キーワードとして #エオロゴ という単語を入力します。ここではハッシュタグではなく通常の文字列でも構いません。

設定が終わりCreate triggerを押すと、次はthatを選ぶ画面に移行します。
f:id:gelehrtecrest:20190415105556p:plain

If this then that の thatを設定する(その1)

thatの所にはWebhookを選びたいのです。最初は多くの選択肢が表示されていますが、テキストボックスでWebhookと入力すると検索し絞り込んで、Webhookだけが表示されます。
f:id:gelehrtecrest:20190415105740p:plain

Webhookにより接続を行います。
f:id:gelehrtecrest:20190415105836p:plain

選択肢はいくつかあるかもしれませが、私の環境ではMake a web requestだけが用意されていました。これを使います。
f:id:gelehrtecrest:20190415105930p:plain

Webhookの設定を行いますが、discordのWebhookのURL先が必要になるため、一旦discordの画面に移動します。

discordの設定方法

自分用のサーバーを作成

今回は新たに自分用のサーバーを作成します。
discordの画面で、サーバー一覧の一番下のプラスボタンを押してください。
f:id:gelehrtecrest:20190415110634p:plain

いくつかの設定がありますが、特に問題なくサーバーを作ることができると思います。

補足:実際には自分のサーバーを作る必要はなく、自分が所属しているサーバーでWebhookに関する権限を貰えればいいのですが、今回は練習も兼ねて自分の自由にできるサーバーで作業するという流れで説明します。

通知を受け取るテキストチャンネルを作成する

今回は #エオロゴ のツィート情報を受け取る例で書いていますので、テキストチャンネルはエオロゴという名前にしました。
f:id:gelehrtecrest:20190415111132p:plain

作成したら歯車ボタンが名前の横に出来ているはずです。これをクリックします。すると設定画面が出てきます。
f:id:gelehrtecrest:20190415111229p:plain

Webhookの設定を行います。Webhooksのメニューを開き、Webhookを作成を押します。すると作成画面が出てきます。
f:id:gelehrtecrest:20190415111343p:plain

名前や画像は適当に設定していただければ問題ないのですが、重要なのは一番下のWEBHOOK URLの部分です。これをCopyボタンを押してクリップボードにコピーし、保存を押します。

IFTTTの設定方法(その2)

If this then that の thatを設定する(その2 Webhookの設定)

では、IFTTTのWebhookの設定部分に戻ります。それぞれ以下のように入力します。

  • URL: discordで保存したWEBHOOK URLを張り付ける。(画像例ではぼかしています)
  • Method: POST
  • Content Type: application/json
  • Body: { "content" : " {{CreatedAt}} : {{LinkToTweet}} " }

2019/08/19 追記
Bodyに書くのは { "content" : " {{CreatedAt}} : {{LinkToTweet}} " }だけです。
Body: { "content" : " {{CreatedAt}} : {{LinkToTweet}} " }と書き込んではいけません。
分かりにくい部分だと思いますので追記。

f:id:gelehrtecrest:20190415105949p:plain

「Add ingredient」を押すと入力例が出ます。Bodyはdiscordに出力される文字情報で、もっと複雑にすることも可能です。今回は一例としてください。

これで一通りの設定が終了です。次のような画面が出れば成功です。
f:id:gelehrtecrest:20190415112319p:plain

動作確認

何か検索キーワードを含むツィートをしてみてください。しばらくするとdiscordに書き込みが出てきます。
f:id:gelehrtecrest:20190415112513p:plain

あとは貴方の自由です!たくさんテキストチャンネルを作って、それぞれで監視体制を整えてみると良いかもしれません。
f:id:gelehrtecrest:20190415112728p:plain

注意点

IFTTTからの通知は即時来るわけでもなく、またIFTTTの説明文にもありますが全てのツィートを網羅できるわけではありません。また鍵アカウントは監視できなかったりします。それでも十分に役立つと思います。
あとTwitterの検索では、RTされたツィートも新しいツィートとして判定されるので、同じツィートの通知が連続で来る可能性もあります。この辺りはいくつか改善する必要があるかもしれませんね。

他のサービスへの応用

賢明な読者はお気づきかと思いますが、今回の手法はTwitter以外のサービスでも使えますし、discord以外でも受け取れます。

応用例:ブログ更新を受け取りたい

IFTTTはRSSの通知を受け取ることも可能です。ブログの新着通知をdiscordで受け取るのもいいかもしれませんね。
f:id:gelehrtecrest:20190415113239p:plain

応用例:通知をLINEで受け取りたい

LINEに接続するとLINE Notifyで通知を受け取ることが可能です。私は今までTwitterの監視をLINEを使って行っていました。が、テキストチャンネルを分けることができないのが難点ですね。何か重要なツィート1種類だけの通知を受け取るならLINEがいいかもしれません。
f:id:gelehrtecrest:20190415113456p:plain

応用例:IFTTTを使わずに通知を受け取る

GitHubなどのサービスでは、自分でWebhookのURLを叩いてくれる仕組みを持つものがあります。その場合IFTTTは必要ありません。むしろそのような仕組みが用意されていない場合にIFTTTを使うと考えたほうが良いかもですね。
GitHubでWebhookのURLを叩く方法などについてはこちらのサイトを参考にしてみてください。

blog.manaten.net

終わりに

今回はdiscordをボイスチャットのためだけに使っている人向けに記事を書いてみました。複雑なことをするにはプログラミングをする必要があるのですが、このような簡単なことであればプログラミング無しで、discordをより便利なものにしてくれることができます。せっかく便利なものが広まっているのですから、使いこなしていきたいですね。

今回はここまで。それではー


スポンサーリンク