Skip to content

thirdlf03/observer-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

observer-bot

指定した 監視用ボットの投稿を検知し、要約用ボットにメンション付きで依頼する Discord ボットです。要約そのものは行いません(要約用ボット側の役割です)。

動作

  1. スラッシュコマンドで「監視するボット」と「要約を依頼するボット」を登録する(設定は observer-config.json に保存)。
  2. 監視対象ボットがメッセージを投稿したとき、本文をそのまま使い、監視ボットの投稿へ返信する。

送信されるメッセージの形式は次のとおりです。

<@要約ボット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 .

debug(手動で転送を試す)

指定チャンネルの履歴から、監視対象ボットが投稿した最新 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 を表示

Alpine Linux + OpenRC で常駐

前提パッケージの例: 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 には接続できません。次が必要です。

  1. /etc/observer-bot.env を編集し、DISCORD_BOT_TOKEN に Developer Portal のトークンを設定する。

  2. サービスを起動する

    rc-service observer-bot start
    rc-service observer-bot status
  3. 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.shAPP_DIR 環境変数で作業ディレクトリを変えられます(未設定時 /opt/observer-bot)。

ライセンス

リポジトリに LICENSE が無い場合は、利用条件はリポジトリ所有者に従ってください。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors