tmytのらくがき

個人の日記レベルです

Cloudflare WorkersでTwitter通知を作った

いままでIFTTTを使ってTwitterからDiscordへ通知していたのだけれど、Discordへの反映がとても遅い。最大1時間遅れでやってくる。しかも最近は3個までしか登録させてくれない。

そんな時にCloudflareを眺めていたらWorkersはスケジュール実行できますよ、と書いていたのでささっと通知するスクリプトを書いてみた。

gist.github.com

  • 環境変数のAPP_TOKENにTwitterのBearerトークンを入れる。
  • KeyValueを作って、KVという名前で登録する。
  • KyeValueに3つの値を入れる
キー
SID_{screenname} 0
UID_{screenname} ユーザの数値ID
WEBHOOK_{screenname} DiscrodのWebhookURL

これを設定してCronで1分にしておけばOK。毎分Twitterをクロールして更新があったらDiscordに素早く通知がくるようになりました。

Cloudflare Workers

こんな使い方をしていても今のところ無料。無料枠だと、1日に10万リクエストしか使えない。ということになっているのだけれど、どうやらこれはHTTPハンドラが呼び出された回数しかカウントされていないみたい。

今回みたいにスケジュール実行しか使ってないとカウントもされていなさそう*1だし、1回の実行が10ms*2を超えなければ何やっても大丈夫*3。AzureとかGCPとか使うより確実に安いし早いし楽だしこれはいい…

*1:少なくともリクエスト回数見てる限りそういうカウントがされていそう

*2:ただしこの10msにはI/Oをawaitしている時間は含まれていないので実際のところ案外長く実行できる

*3:たぶん