feature image

2026年4月16日 | ブログ記事

新歓ブログリレーを支えるリマインダーBOTについて

はじめに

この記事は新歓ブログリレー2026 42日目の記事です

導入

n3です。新歓ブログリレーの担当をしています。
新歓ブログリレーでは、毎日誰かが新入生向けのブログを書いています。参加は自己申告制で、部内wikiの担当表に名前を書き込むだけです。

----------2026-04-10-095459

しかし、人間は数週間後に入れた予定を忘れるものです。期限が近くなってきたらその人をメンションしてやる必要があります。ですが、僕が毎朝8時に起きて担当表を見て当日の担当者をメンションして...なんてするのは面倒です。そもそも僕はそんなに早起きできません。

そこで、担当表の情報を自動で読み取って、対象者をメンションするBOTを作成しました。

そもそも、このようなBOTを作るのは例年行われていることです。詳しくは以下の記事をご覧ください。

H1rono_K さん:https://trap.jp/post/1992/
Hueter さん:https://trap.jp/post/2193/, https://trap.jp/post/2445/

これらの方が、僕のブログよりも役に立つ情報が詰まってます。見に行ってください。

作成の流れ

テンプレートの導入

@cp20 さんというすごい人が、BOTを簡単に制作できるテンプレートを作っています。これです。このブログの1億倍ぐらい有用です。今すぐ見に行ってください。

crowiの利用

部内wikiにはAPIがあります。適当にアクセストークンを取得すれば何とかなります。
----------2026-04-13-174815

必要な機能の実装

wikiはHTMLが使えるマークダウンで書かれています。そこで、日程表の最初に特定のコメントアウトを入れることで、それ以下の部分を担当表のデータとして取得します。
----------2026-04-13-231902

あとは行ごとに文字列を取得して、| で値を区切ります。そのデータを配列で持ちながら、適当に検索すれば実装完了です。要件定義してGeminiに書いてもらいましょう。

NeoShowcaseへの移行

ここはしーぴーさんのブログのやり方だとうまく行かなかったので、Geminiを叩きました。

以下は解決方法です。

# ベースイメージとしてBunの公式イメージを使用
FROM oven/bun:1

# 作業ディレクトリを指定
WORKDIR /app

# パッケージの依存関係ファイルをコピーしてインストール
COPY package.json bun.lock ./
RUN bun install

# プロジェクトのソースコードをすべてコピー
COPY . .

# アプリケーションの起動コマンド
CMD ["bun", "run", "index.ts"]

完成品

いい感じにMDの形式に整理します。下みたいな感じにしました。これは前年に作成されたものを参考にしています。
----------2026-04-13-233529

いかがでしたか?

いつもより雑なブログでした。
これを参考にブログリレーBOTを作る人がいるかも知れないです。とりあえず、「cpさんのパッケージを使えばなんとかなる」ということだけ覚えておけば何とかなります。ちなみにPythonとか他の言語を使ってBOTを使っている人もいます。

競プロしかしていない人間ですが、BOTは作れます。好きなBOTを作成してみてください。

明日の担当は @nemlos5 さんです。

n3 icon
この記事を書いた人
n3

「n3」は「エヌさん」って読みます。主にアルゴリズム班で活動しています。

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2023年7月15日
2023 春ハッカソン 06班 stamProlog
H1rono_K icon H1rono_K
2023年9月13日
ブログリレーを支えるリマインダー
H1rono_K icon H1rono_K
2026年4月11日
1日かけて線路沿いを歩いてみた話(京王線/前篇)
Alt--er icon Alt--er
2025年12月8日
工大祭運営用ツールを作った
Luke256 icon Luke256
2024年3月13日
いきなりScalaを書いた
H1rono_K icon H1rono_K
2023年4月24日
traQを直すまで
noc7t icon noc7t
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記