始めまして、Kangpingです。
最近 AtCoder通知Bot という DiscordBotを作成させていただきました。
Jikky1618 さんが大体の仕様を考えてくれました。ありがたい。
↑こういう画像を自動で投稿したりするBotです。当日通知と一時間前通知もあります。(あと精進ポイント通知も)
経歴
中学二年生の一般中学生。プログラミングに触れたのは小学一年生の時に始めたプログラミンという文部科学省が作っていたビジュアルプログラミングサイト。そのあとに小学二年生のころにScratchを始めて小学四年生のころに AtCoder を Python ではじめた。現在は Typescript を主に普段使い、AtCoder などの競技プログラミングでは Python を使用している。
なぜ DiscordBot を作り始めたのか
私が中学一年生のころに Discord を始めて、友達に「DiscordBot作ってみたら」と言われたのがきっかけ。なお、それ以前に SlackBot 作成で CoffeeScript につまずいたことがあったので少し心配だったのが、その当時大量に書いていた Node.js 出かけることがわかり、やってみようと思ったら結構楽しかったのでいろいろな機能を付けていって技術力を上げていった。
AtCoder通知Bot の作成
AtCoder通知Bot の作成はなんか友達にやれとか言われずに自分でやったので楽しかったです。開発言語は Typescript、Discord.jsを使用しています。一番最初に開発したバージョンは 2023年8月11日にリリースしました。その後、2024年1月23日にすべてのコードを書き直した大規模なアップデートをして今に至ります。
使用 API など
AtCoder
コンテスト一覧ページ
コンテスト一覧ページを直接 Node.js からたたき libxmljs を使用して解析しています。コンテスト名、URL、レーティングタイプ、コンテスト時間、レーティング範囲などを取得しています
コンテストランキング
このページは AtCoder アカウントでログインした人しか開けなくなったため、一定時間ごとに AtCoder のアカウントにログインしています。
AtCoder Problems
コンテストの diff など
コンテストの diff を取得します。ADL に対応するために これだけではなくいろいろ取得しています。一分ごとに diff の変更がないかどうか監視しています
ユーザーの提出情報
このようなリンクから取得しています。これは精進ランキングを作成するために作成しています。すべての登録されたユーザーに対して行っています。5分ごとにすべてのユーザーのデータを取得しています。
ac-predictor
APerf
ランキング昨日のパフォーマンスとレーティングを計算するために使用しています。
結論
中学二年生でもがんばれば DiscordBot は作れる。
リンク
Botの参加リンク:https://discord.com/api/oauth2/authorize?client_id=1140221377174044722&permissions=165888&scope=bot
AtCoder:https://atcoder.jp/
ac-predictor:https://ac-predictor.com/
AtCoderProblems:https://kenkoooo.com/atcoder/
最初の画像にいる人たち
maspyさん:https://atcoder.jp/users/maspy/
yukkkuさん:https://atcoder.jp/users/yukkku/
blueberry1001さん:https://atcoder.jp/users/blueberry1001/
kangpingさん:https://atcoder.jp/users/kangping/
Jikky1618さん:https://atcoder.jp/users/jikky1618/
yaakiyuさん:https://atcoder.jp/users/yaakiyu/
ujex256さん:https://atcoder.jp/users/ujex256/
So_teACさん:https://atcoder.jp/users/So_teAC/