指定した 監視用ボットの投稿を検知し、要約用ボットにメンション付きで依頼する Discord ボットです。要約そのものは行いません(要約用ボット側の役割です)。
- スラッシュコマンドで「監視するボット」と「要約を依頼するボット」を登録する(設定は
observer-config.jsonに保存)。 - 監視対象ボットがメッセージを投稿したとき、本文をそのまま使い、監視ボットの投稿へ返信する。
送信されるメッセージの形式は次のとおりです。
<@要約ボットID> {監視ボットの投稿と同じ内容} 要約して
本文が空で Embed のみのときは、Embed の URL(なければ Description)を拾います。
- Go 1.25 付近(
go.modに準拠) - Discord ボット(トークン)
- Developer Portal で Message Content Intent をオンにすること(ギルドのメッセージ本文を読むため)
- ボット招待時に
applications.commandsスコープ を付けること(スラッシュコマンド利用)
.env.example を参照。主な項目は次のとおりです。
| 変数 | 必須 | 説明 |
|---|---|---|
DISCORD_BOT_TOKEN |
はい | このボット(observer-bot)のトークン |
DISCORD_GUILD_ID |
いいえ | 設定するとスラッシュコマンドがそのギルドにのみ登録される(反映が早い)。未設定時はグローバル登録 |
OBSERVER_CONFIG_PATH |
いいえ | 設定 JSON のパス。未設定時はカレントディレクトリの observer-config.json |
MONITORED_BOT_ID |
いいえ | 設定ファイルがまだ無いときだけ、監視ボット ID の初期値として使用 |
SUMMARY_BOT_ID |
いいえ | 同上、要約依頼先ボット ID の初期値 |
DISCORD_DEBUG_CHANNEL_ID |
いいえ | debug サブコマンドで -channel を省略するときの既定チャンネル |
プロジェクト直下の .env を起動時に自動で読み込みます(既にシェルで設定されている環境変数は上書きしません)。ファイルが無い場合は読み込みをスキップします。
cp .env.example .env
# .env に DISCORD_BOT_TOKEN=... を書く
go run .指定チャンネルの履歴から、監視対象ボットが投稿した最新 1 件を選び、本番と同じ sendForward(要約ボットへの返信)を一回だけ同期的に実行します。
chmod +x ./debug
./debug -channel チャンネルID
# または
go run . debug -channel チャンネルID
# チャンネルは環境変数 DISCORD_DEBUG_CHANNEL_ID でも指定可能事前にスラッシュコマンドまたは observer-config.json で監視ボット/要約ボットが設定済みであること、ボットがそのチャンネルのメッセージ履歴を読めることに注意してください。
| コマンド | 権限 | 内容 |
|---|---|---|
/observer-set-monitored |
Manage Guild 相当 | 監視するボットを登録 |
/observer-set-summary |
同上 | 要約を依頼するボットを登録 |
/observer-status |
なし | 登録済み ID を表示 |
前提パッケージの例: apk add go openrc
リポジトリをサーバーに置いたうえで、root でインストールスクリプトを実行します。
sudo sh deploy/openrc/install.shスクリプトが行うこと:
go buildして/usr/local/bin/observer-botに配置/usr/local/libexec/observer-bot/run.shと/etc/init.d/observer-botを配置observerユーザー、/opt/observer-botを作成/etc/observer-bot.envが無ければ.env.exampleから作成(トークンは空)rc-update add observer-bot defaultで起動ラインに登録
インストールだけでは Discord には接続できません。次が必要です。
-
/etc/observer-bot.envを編集し、DISCORD_BOT_TOKENに Developer Portal のトークンを設定する。 -
サービスを起動する
rc-service observer-bot start rc-service observer-bot status
-
Discord 上で
/observer-set-monitoredと/observer-set-summaryを実行し、監視ボット・要約ボットを登録する。
トークンを入れずに起動すると、プロセスがすぐ終了し、supervise-daemon による再起動が繰り返されるので注意してください。
| パス | 内容 |
|---|---|
/usr/local/bin/observer-bot |
実行バイナリ |
/usr/local/libexec/observer-bot/run.sh |
環境読み込み後にバイナリを起動 |
/etc/observer-bot.env |
環境変数(ENV_FILE を変えずデフォルト利用) |
/opt/observer-bot/ |
作業ディレクトリ(既定の observer-config.json はここに生成) |
run.sh は APP_DIR 環境変数で作業ディレクトリを変えられます(未設定時 /opt/observer-bot)。
リポジトリに LICENSE が無い場合は、利用条件はリポジトリ所有者に従ってください。