高機能なDiscord Botプロジェクトです。
サーバー管理、権限管理、スラッシュコマンド連携、Webダッシュボードなどの機能を提供します。
本リポジトリはPython製のDiscord Botです。
Bot本体はdiscord.py v2.3系を基盤に、管理者権限判定、スラッシュコマンド、Webダッシュボード(Flask)等を実装しています。
- スラッシュコマンド対応:
/コマンド形式のBot操作 - サーバー・メンバー管理: 管理者・ギルド単位での権限管理
- レートリミットと自動タイムアウト: コマンド乱用ユーザーの自動制限
- Webダッシュボード: FlaskベースのWeb管理画面(
http://0.0.0.0:5000/で起動) - データベース連携:
database.jsonファイルによる管理 - プラグインシステム:
plugins/ディレクトリによる機能拡張 - 動画通知システム: YouTube等の動画新着通知・ライブ配信検知(XML/RSS活用、API不要、ベータ版)
- EULA同意チェック: 利用時のエンドユーザーライセンス同意必須
- 環境変数管理:
python-dotenvによる安全なトークン等の管理 - API連携:
/api/bot-statusエンドポイントでBot状態取得
- Python 3.9以上
- pip
-
リポジトリをクローン
git clone https://github.com/gamelist1990/Discord.git cd Discord -
依存関係をインストール
pip install -r requirements.txt
-
環境変数を設定
.envファイルを作成し、最低限DISCORD_BOT_TOKENを設定
# 例 echo "DISCORD_BOT_TOKEN=あなたのBotトークン" > .env
-
必要に応じて
config.jsonの管理者リスト等を編集
python index.py初回実行時、EULA(利用規約)への同意が必要です。
- サーバーで
#helpでコマンド案内 - スラッシュコマンド:
/から始まるコマンド - 動画通知設定:
#infoで動画通知システムを開く(動画・ライブ配信の個別間隔監視)
- http://0.0.0.0:5000/ で起動(Flask)
eulaAgreed:EULA同意フラグglobalAdmins:グローバル管理者IDリストguildAdmins:ギルドごとの管理者IDリスト
- Botが扱うデータベース(JSON形式)
DISCORD_BOT_TOKEN:Botのトークン(必須)Key:WebAPI認証用キー(任意)
config.jsonで管理者(グローバル・ギルド毎)を設定可能- コマンド実行や特定の管理操作は管理者IDのみ許可
新機能として、YouTube等の動画プラットフォームの新着動画を自動で通知するシステムを実装しました。
- API不要: XMLフィード(RSS)を活用してAPIキー無しで動作
- 個別チェック間隔: 各チャンネルごとに3-60分の間隔を設定可能
- ライブ配信検知: 配信開始も自動検知・通知(ベータ版機能)
- Modal UI: Discord のModalとEmbedを活用した直感的な設定画面
- 複数チャンネル対応: 複数のYouTubeチャンネルを同時監視可能
- DataBase統合: DataBase.pyによる設定管理
- 通常コマンド:
#infoコマンドで簡単アクセス
#infoコマンドを実行- 「📹 動画通知を設定」ボタンをクリック
- Modalで以下を入力:
- YouTubeチャンネルURL
- 通知先DiscordチャンネルID
- チェック間隔(3-60分(1時間)、デフォルト30分)
- 個別チェック間隔で自動チェック実行(各チャンネルごとに設定)
- チェック間隔内に投稿・配信開始されたコンテンツを通知
- 🎬 通常動画:新着動画通知
- 🔴 ライブ配信:配信開始通知(ベータ版)
- チェック間隔制限:最小3分、最大60分(1時間)
- レート制限対策:重複排除・キャッシュ・リクエスト間隔制御
- カスタム通知メッセージ:動画・ライブ別にメッセージをカスタマイズ可能
- DataBase.pyによる設定・状態管理
- 効率的な通知システム
- 📝 動画通知とライブ配信通知でそれぞれメッセージをカスタマイズ
- 🎨 プレースホルダー対応:
{title}- 動画/配信タイトル{url}- 動画/配信URL{author}- チャンネル名{published}- 公開日時(動画のみ)
- 🔄 デフォルトに戻す機能付き
- 💬 チャンネル別個別設定で細かくカスタマイズ
youtube.com/channel/UC...youtube.com/c/チャンネル名youtube.com/user/ユーザー名youtube.com/@ハンドル名
本BotはFlaskベースのWebAPIを提供しており、api.pyとserver.pyの2つのモジュールで構成されています。
Discord Botの基本的な機能を提供するAPIエンドポイントを定義:
ネットワーク・システム情報
/api/network/info- ネットワーク情報(認証必要)/api/system/info- システム情報(認証必要)/api/ip- IP情報のみ(パブリック)/api/ports- ポート情報(認証必要)/api/health- ヘルスチェック(パブリック)/api/full-status- 完全なステータス情報(認証必要)
アドレス情報
/api/server/address- サーバーアドレス情報/api/simple/address- シンプルアドレス情報(パブリック)
データベース操作
/database- database.jsonの読み取り(認証推奨)/api/database/update- database.jsonの更新(認証必要)
高度なAPI管理機能を提供するライブラリモジュール:
管理用APIエンドポイント
/api/management/status- API登録状況と統計(認証必要)/api/management/resources- システムリソース情報(認証必要)/api/management/port-check- ポート接続テスト(パブリック)/api/simple/address- シンプルアドレス情報(パブリック、重複定義)
APIManager クラス機能
- 🛡️ 認証: 自動的なAPIキー認証チェック
- ⏱️ レート制限: IPベースでのリクエスト制限
- 📊 統計収集: APIコール数の自動収集
- 🔧 動的登録: 実行時でのAPIエンドポイント追加/削除
index.pyのregisterFlask()関数で両モジュールを統合:
- api.py:
register_api_routes(app, bot_instance)で静的エンドポイントを登録 - server.py:
integrate_with_flask_app(app)でAPI管理機能を有効化 - Flask起動: 別スレッドでWebサーバーを
0.0.0.0:5000で起動
APIキー認証:
- 環境変数
KeyまたはHTTPヘッダーX-API-Keyで認証 - 一部のパブリックAPIは認証不要
- 認証が必要なAPIで不正な場合は
403 Forbiddenを返却
Discord/
├── index.py # メインBotスクリプト
├── api.py # 静的APIエンドポイント定義
├── server.py # 動的API管理フレームワーク
├── utils.py # ユーティリティ関数
├── DataBase.py # データベース管理
├── requirements.txt # 依存パッケージ
├── config.json # 設定ファイル
├── database.json # データベース
├── video_notifications.json # 動画通知設定(自動生成)
├── plugins/ # プラグイン拡張用
│ ├── info.py # 動画通知システム(NEW)
│ ├── antiModule/ # アンチスパムモジュール
│ │ ├── flag_system.py # フラグシステム
│ │ ├── flag_commands.py # フラグコマンドUI
│ │ └── ... # その他のアンチスパム機能
│ ├── slash/ # スラッシュコマンド
│ │ ├── check.py # ユーザー情報チェック
│ │ └── ...
│ └── ... # その他のプラグイン
├── templates/ # Flask用テンプレート
├── .env # 環境変数ファイル(git管理外)
├── venv/ # 仮想環境
└── ...
- index.py: Discord Botのメインエントリポイント、プラグインロード、Flask統合
- api.py: 静的なAPIエンドポイント(ネットワーク情報、データベース操作など)
- server.py: 動的API管理(認証、レート制限、統計収集)とAPIManager機能
- utils.py: システム情報取得、ネットワーク操作などの共通ユーティリティ
- DataBase.py: JSONベースのデータベース管理とAPI操作
※ plugins/、templates/ディレクトリには追加の機能やWeb画面素材を配置
本プロジェクトは現時点で明示的なライセンスが指定されていません。
利用規約(EULA)に同意の上でご利用ください。
- ソース: GitHubリポジトリ
- プロジェクトタイプ: Discord Bot (Python)
- メイン言語: Python
- 依存関係: discord.py >=2.3.0, python-dotenv, flask, aiohttp, requests, Pillow
- 機能: スラッシュコマンド, 管理者判定, Web管理画面, プラグイン, 動画・ライブ通知システム(ベータ版), EULA同意, レートリミット
- 設定ファイル: ✅ requirements.txt, ✅ config.json
- GitHub統計: ⭐ 0 stars, 🍴 0 forks
- ライセンス: 未指定(EULA同意必須)
**ファイル一覧やディレクトリ情報はGitHubのリポジトリページでご確認ください。
本READMEは自動生成されました。情報の正確性については[要確認]部分も含みます。