🤖

【Discord.js】既読管理とリマインド機能を持つDiscord BOTを作ってみた

に公開

はじめに

こんにちは、saitogoです。
今回は、Discordサーバーでメッセージの既読管理とリマインド機能を持つBOTを開発したので、その紹介と使い方について記事にまとめました。

「重要なお知らせを投稿したけど、誰が読んだかわからない...」
「全員に確実に読んでもらいたい情報があるのに、見落とされてしまう...」
「メッセージをまだ見てない人にリマインドしたいけど、一人一人手動でDM送るのが面倒くさい...」

そんな課題を解決するために、メッセージの既読状況を視覚的に管理し、未読者にリマインドを送信できるBOTを開発しました。

BOTのデモ画像

作成したBOTの概要

https://github.com/saitogo555/discord-readme-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」を許可してください。

Installationページの権限設定

Botページで「Presence Intent」「Server Members Intent」「Message Content Intent」の3つを許可してください。

Installationページの権限設定

3. 環境変数設定

.env
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コマンドで現在の既読状況を確認できます。

メッセージIDのコピー
既読状況確認コマンド
既読状況の結果表示

Step 4: リマインダーの送信

未読者がいる場合、/readme remindコマンドでDMリマインドを送信できます。

メッセージIDのコピー
リマインドマンド
リマインド送信結果

Step 5: 受信したリマインドDM

未読者には以下のようなDMが送信されます。

受信したリマインドDM

まとめ

今回はDiscord.jsとTypeScriptを使って、メッセージの既読管理とリマインド機能を持つBOTを開発しました。
👀リアクションによる直感的な既読確認と、未読者への自動DMリマインド機能により、重要な情報の見落とし防止と管理者の負担軽減を実現できました。
ゲームサーバーやチーム運営など、確実な情報共有が必要な場面でぜひ活用してみてください。
コードは全てGitHubで公開していますので、コントリビューションやカスタマイズもお気軽にどうぞ!

参考リンク

GitHubで編集を提案

Discussion