【Discord.js】既読管理とリマインド機能を持つDiscord BOTを作ってみた
はじめに
こんにちは、saitogoです。
今回は、Discordサーバーでメッセージの既読管理とリマインド機能を持つBOTを開発したので、その紹介と使い方について記事にまとめました。
「重要なお知らせを投稿したけど、誰が読んだかわからない...」
「全員に確実に読んでもらいたい情報があるのに、見落とされてしまう...」
「メッセージをまだ見てない人にリマインドしたいけど、一人一人手動でDM送るのが面倒くさい...」
そんな課題を解決するために、メッセージの既読状況を視覚的に管理し、未読者にリマインドを送信できるBOTを開発しました。
作成したBOTの概要
主な機能
- 自動既読管理: BOTがメンションされたメッセージに👀リアクションを自動追加
- 既読状況確認: スラッシュコマンドで誰が既読・未読かを一目で確認
- リマインダー機能: 未読者に一括でDMリマインドを送信
- 対象者指定: 個人、ロール、@everyoneなど柔軟な対象指定
使用場面
- 重要なお知らせ: 全メンバーに確実に読んでもらいたい情報
- イベント告知: ゲームイベントや配信の告知
- 業務連絡: チーム内での重要な業務連絡
- 学習グループ: 課題や資料の共有確認
技術スタック
カテゴリ | 技術 | 説明 |
---|---|---|
ランタイム | Node.js | JavaScriptランタイム環境 |
言語 | TypeScript | 型安全性によるコード品質向上 |
ライブラリ | Discord.js | Discord APIの操作 |
実行ツール | tsx | TypeScriptファイルの直接実行 |
フォーマッター/リンター | Biome | 高速なコード品質管理ツール |
環境変数管理 | dotenv | 環境変数の読み込み |
選定理由
- TypeScript: 型安全性により開発効率とコード品質を向上
- Discord.js v14: 最新のDiscord API機能を活用可能
- Biome: 高速なフォーマッター・リンターでコード品質を維持
- tsx: TypeScriptファイルをコンパイル不要で直接実行可能
プロジェクト構成
discord-readme-bot/
├── src/
│ ├── commands/ # スラッシュコマンド
│ ├── events/ # イベントハンドラー
│ ├── utils/ # ユーティリティ関数
│ ├── config.ts # 設定ファイル
│ └── index.ts # エントリーポイント
├── package.json
├── tsconfig.json
└── biome.json
BOTのセットアップ方法
1. 前提条件
- Node.js 18以上
- Discord Developer Portal でのBOT作成
- 適切な権限設定
2. 必要な権限
Discord Developer Portalから権限の設定が必要です。
Installationページで「Manage Message」を許可してください。
Botページで「Presence Intent」「Server Members Intent」「Message Content Intent」の3つを許可してください。
3. 環境変数設定
DISCORD_TOKEN=your_bot_token_here
CLIENT_ID=your_bot_client_id_here
4. インストールと起動
# 依存関係のインストール
npm install
# BOTの起動
npm start
# 開発モード(ファイル変更を監視)
npm run watch
使用方法
Step 1: メッセージの投稿
BOTをメンションして重要なメッセージを投稿します。
対象となるユーザーやロールも同時にメンションしてください。
BOTがメッセージを検知すると、自動的に👀リアクションが追加されます。
ポイント:
- BOT(@ReadmeBot)を必ずメンションする
- 対象者(個人、ロール、@everyone、@here)をメンションする
Step 2: ユーザーの既読確認
対象ユーザーは👀リアクションをクリックして既読を表明します。
ユーザー側の操作:
- メッセージを確認後、👀リアクションをクリック
- リアクション数が増加することを確認
Step 3: 既読状況の確認
管理者は/readme check
コマンドで現在の既読状況を確認できます。
Step 4: リマインダーの送信
未読者がいる場合、/readme remind
コマンドでDMリマインドを送信できます。
Step 5: 受信したリマインドDM
未読者には以下のようなDMが送信されます。
まとめ
今回はDiscord.jsとTypeScriptを使って、メッセージの既読管理とリマインド機能を持つBOTを開発しました。
👀リアクションによる直感的な既読確認と、未読者への自動DMリマインド機能により、重要な情報の見落とし防止と管理者の負担軽減を実現できました。
ゲームサーバーやチーム運営など、確実な情報共有が必要な場面でぜひ活用してみてください。
コードは全てGitHubで公開していますので、コントリビューションやカスタマイズもお気軽にどうぞ!
Discussion