##AtCoder Stalkerとは
AtCoder StalkerはAtCoderのユーザーが精進した時にそれをLINEで通知してくれるサービスです。
LINEのMessagingAPIとAWSのLambdaを用いて作りました。
このようにLINEで誰かが精進した際に自動でお知らせしてくれます。
##主な機能
- ストーキングリストへの登録
- ストーキングリストの削除
- 現在登録しているユーザーの取得
- LINEへの精進量通知
##システム構成
システム構成図は上記の通りとなっています。
LINE MessaginAPIではユーザーの行動に応じてWebhookイベントを飛ばすことができます。
WebhookイベントをAPI Gatewaiで受け取りそれをトリガーとして①のLambdaを実行します。
①のLambdaでは以下のことをやっています。
- ストーキングリストへの登録
- ストーキングリストの削除
- 現在登録しているユーザーの取得
ストーキングリストの登録はユーザーからAtCoderIDを含むリクエストを受信した際に、その情報をDBに登録しています。
登録の前にあらかじめDBを確認しており、すでに登録されている場合は削除が行われます。
また登録する際には、そのAtCoderIDが存在するか判定する必要があります。これはAtCoderの公式サイトのユーザーページがあるかどうかで判定しています。(例:https://atcoder.jp/users/Zaurus)
現在登録しているユーザーの取得はユーザーからリスト
とLINEにメッセージが送られた場合に行われます。DBから現在ストーキングリストに登録してある情報を返します。
②のLambdaと③のLambdaは精進量をLINEに通知するために使用されます。
この関数はCloudWatchで定期的に実行されます。
②ではまず、AtCoderのAC数を取得します。この際、既に格納されていた値も参照しており、増加分がそのユーザーの精進量ということになります。AC数の取得はAtCoderProblems様のAPIをお借りしています。
②で取得したAC数と増加分、2つの値を③のLambdaへ渡し、LINEにpushメッセージを送信しています。
##おわりに
AtCoder Stalkerで使用した技術を説明しました。
詳しいサービスの内容はこちらで説明しています。
もし興味があればぜひ使ってみてください!
以下LINEの友達登録のリンクとQRです。
https://line.me/R/ti/p/@381fkvdg
コメントや要望、不具合やバグなどがありましたら、お手数ですがtwitterのDMまでご連絡をお願いいたします。
####Reference
https://atcoder.jp/