LoginSignup
12
8

More than 3 years have passed since last update.

AtCoder Stalkerを支える技術

Last updated at Posted at 2020-05-14

AtCoder Stalkerとは

AtCoder StalkerはAtCoderのユーザーが精進した時にそれをLINEで通知してくれるサービスです。
LINEのMessagingAPIとAWSのLambdaを用いて作りました。

このようにLINEで誰かが精進した際に自動でお知らせしてくれます。
通知のコピー.jpg

主な機能

  • ストーキングリストへの登録
  • ストーキングリストの削除
  • 現在登録しているユーザーの取得
  • LINEへの精進量通知

システム構成

システム構成.png

システム構成図は上記の通りとなっています。

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
AtCoder_Stalker_prd.png

コメントや要望、不具合やバグなどがありましたら、お手数ですがtwitterのDMまでご連絡をお願いいたします。

Reference

12
8
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
12
8