Sophia プロジェクト - ファイル構造詳細

2025-07-12 - 最新ファイル構造分析(新スクリプト含む)

31
総ファイル数
8
主要機能システム
45
Discordコマンド
80,000
RPG装備組み合わせ
76
敵キャラクター
📁 プロジェクト構造
プロジェクト構造
Sophia/
├── 📄 sophia_bot.py                   # メインボット・AI会話システム
├── ⚙️ config.py                      # 全体設定管理
├── 🎮 RPG_cog.py                     # RPGゲームシステム
├── 🎰 gacha_system.py                # ガチャシステム
├── 📊 rpg_data.py                    # RPGデータ定義
├── 🔧 rpg_utils.py                   # RPGユーティリティ
├── 🎨 rpg_views.py                   # RPG用UI要素
├── 👑 sophia_admin_cog.py            # 管理者コマンド
├── 🎵 sophia_audio_cog.py            # 音楽再生機能
├── 📋 sophia_context_menu_cog.py     # コンテキストメニュー
├── 📰 sophia_feed_monitor_cog.py     # RSSフィード監視 [停止中]
├── 🏠 sophia_home_cog.py             # 家電操作
├── 📝 sophia_logger_cog.py           # メッセージログ
├── 🌡️ sophia_monitor_cog.py          # 環境監視
├── 🔮 sophia_omikuji_cog.py          # おみくじ機能
├── 💬 sophia_proactive_cog.py        # 自発会話 [停止中]
├── 🔌 switchbot_api.py               # SwitchBot API
├── 🚀 start_sophia.sh                # Sophiaボット起動スクリプト
├── 🔄 restart_loop.sh                # 自動再起動ループスクリプト
├── 📝 auto_commit.sh                 # 自動Git commitスクリプト
├── 🔍 check_db.py                    # データベース確認・管理ツール
├── 🗃️ sophia_database.db             # SQLiteデータベース
├── 🗃️ sticky_messages_sophia.db      # スティッキーメッセージDB
├── 📄 requirements.txt               # 依存関係
├── 📄 README.md                     # プロジェクト説明
├── 📄 auto_commit.log                # 自動コミットログ
├── 📄 bot_restart.log                # 再起動ログ
├── 📄 commit_message.txt             # Gitコミットメッセージ
├── 📄 test_log.txt                   # テストログファイル
├── 📄 kakuritu.html                  # RPG確率表示HTML
├── 📄 restart_loop4.ps1              # PowerShell自動再起動スクリプト
├── 📁 enemy/                         # RPG敵キャラクター(76種類)
├── 📁 S:/                            # Windowsドライブマウント
│   └── Python/My_LLM_Project/user_logs/
└── 📁 venv/                          # 仮想環境
🤖 メインシステム
📄 sophia_bot.py
メイン Python
機能: メインボット・AI会話システム
設定可能なパラメータ
# 開発者設定
owner_id = DEVELOPER_ID

# AIモデル設定
current_model_name = "gemini-2.5-flash"

# 処理設定
processed_messages = deque(maxlen=100)  # 重複処理防止キュー長

# 反応トリガー
trigger_words = ["ソフィア", "ソフィ", "そふぃ", r"¯\_(ツ)_/¯"]

# スティッキーメッセージDB
sticky_db_path = 'sticky_messages_sophia.db'

# 並列処理設定
executor = ThreadPoolExecutor(max_workers=5)
環境変数
GOOGLE_API_KEY=          # Gemini API キー
DISCORD_BOT_TOKEN6=      # Discord ボットトークン
全Cogファイル
⚙️ config.py
設定 Python
機能: 全体設定管理
デバイス設定
DEVICE_IDS = {
    "pc": "DEVICE_PC_ID",                 # PC電源制御
    "ac": "DEVICE_AC_ID",                 # エアコン制御
    "co2_meter": "DEVICE_CO2_ID",         # CO2センサー
    "plug_mini": "DEVICE_PLUG_ID"          # プラグミニ
}
監視設定
MONITOR_CHANNEL_ID = MONITOR_CHANNEL_ID      # 監視通知チャンネル
MONITOR_WEBHOOK_URL = "WEBHOOK_URL_PLACEHOLDER"  # Discord Webhook URL
MONITOR_INTERVAL_SECONDS = 180              # 監視間隔(秒)
環境しきい値
THRESHOLDS = {
    "temperature": {
        "LL": 18.0,  # 極低温警告
        "L": 20.0,   # 低温注意
        "H": 28.0,   # 高温注意
        "HH": 30.0   # 極高温警告
    },
    "humidity": {
        "LL": 20.0,  # 極低湿度警告
        "L": 30.0,   # 低湿度注意
        "H": 60.0,   # 高湿度注意
        "HH": 70.0   # 極高湿度警告
    },
    "co2": {
        "LL": None,  # 下限なし
        "L": None,   # 下限なし
        "H": 1000,   # 高CO2注意
        "HH": 1500   # 極高CO2警告
    },
    "power": {
        "LL": None,    # 下限なし
        "L": None,     # 下限なし
        "H": 300.0,    # 高電力注意
        "HH": 500.0    # 極高電力警告
    }
}
複数のCogから参照
🎮 RPGシステム
🎮 RPG_cog.py
RPG Python
機能: RPGゲームメイン機能
設定可能なパラメータ
chars_per_level = 250                       # レベルアップ必要文字数
ENEMY_DATA_PATH = "enemy/"                  # 敵データフォルダ
rpg_data.py rpg_views.py rpg_utils.py gacha_system.py
📊 rpg_data.py
RPG データ
機能: RPGの基本データ定義
レアリティ別売却価格(実際の値)
SELL_PRICES = {
    "common": 500,
    "uncommon": 1000,
    "rare": 2500,
    "epic": 5000,
    "legendary": 10000,
    "mythic": 15000,
    "unique": 50000
}
レアリティ別出現確率(重み値)
RARITY_WEIGHTS = {
    "common": 339,
    "uncommon": 300,
    "rare": 200,
    "epic": 100,
    "legendary": 50,
    "mythic": 10,
    "unique": 1
}
🎰 gacha_system.py
RPG ガチャ
機能: ガチャシステム
ガチャ設定(実際の値)
GACHA_SETTINGS = {
    "junk": {
        "cost_single": 5000,
        "rarity_pool": {
            "common": 0.60,
            "uncommon": 0.29,
            "rare": 0.10,
            "epic": 0.01
        }
    },
    "influencer": {
        "cost_single": 30000,
        "rarity_pool": {
            "uncommon": 0.50,
            "rare": 0.33,
            "epic": 0.15,
            "legendary": 0.02
        }
    },
    "vip": {
        "cost_single": 100000,
        "rarity_pool": {
            "legendary": 0.70,
            "mythic": 0.25,
            "unique": 0.05
        }
    }
}
🎵 音楽システム
🎵 sophia_audio_cog.py
音楽 Python
機能: 音楽再生機能
FFmpeg設定
ffmpeg_options = {
    'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5',
    'options': '-vn -filter:a "volume=0.5"'   # 音量50%設定
}
yt-dlp設定
ytdl_format_options = {
    'format': 'bestaudio/best',
    'source_address': '0.0.0.0',               # IPv4指定
    'quiet': True,
    'no_warnings': True
}
環境変数
FFMPEG_PATH=                                # FFmpeg実行パス
SPOTIFY_CLIENT_ID=                          # Spotify API ID
SPOTIFY_CLIENT_SECRET=                      # Spotify API Secret
🏠 家電・環境監視システム
🏠 sophia_home_cog.py
家電 Python
機能: 家電操作コマンド
switchbot_api.py config.py
🌡️ sophia_monitor_cog.py
監視 Python
機能: 環境自動監視
switchbot_api.py config.py
🔌 switchbot_api.py
API Python
機能: SwitchBot API通信
環境変数
SWITCH_BOT_TOKEN = "SWITCHBOT_TOKEN_PLACEHOLDER"  # SwitchBotトークン
SWITCH_BOT_CLIENT = "SWITCHBOT_CLIENT_PLACEHOLDER"  # SwitchBotシークレット
📰 情報収集システム
📰 sophia_feed_monitor_cog.py [停止中]
RSS Python
機能: RSSフィード監視
デフォルトニュースソース
DEFAULT_SOURCES = [
    "https://news.yahoo.co.jp/rss/topics/top-picks.xml",
    "https://feeds.feedburner.com/hatena/b/hotentry",
    "https://forest.watch.impress.co.jp/data/rss/1.0/wf/feed.rdf",
    "https://gigazine.net/news/rss_2.0/",
    "https://www.itmedia.co.jp/news/rss/2.0/news_bursts.xml"
]

# 監視間隔:10分
@tasks.loop(minutes=10)
💬 sophia_proactive_cog.py [停止中]
自発会話 Python
機能: 自発的会話機能
設定
# 投稿時間帯設定
# 12:00-20:00の間でランダム投稿

# プロンプト設定
config.PROACTIVE_PROMPT_TEMPLATE            # 自発会話用プロンプト
config.py
🛠️ 管理・ユーティリティ
👑 sophia_admin_cog.py
管理 Python
機能: 管理者コマンド
利用可能AIモデル
available_models = [
    "gemini-2.5-pro",
    "gemini-2.5-flash",
    "gemini-2.5-flash-lite-preview-06-17",
    "gemini-1.5-pro",
    "gemini-2.0-flash",
    "gemini-2.0-flash-lite",
    "gemini-1.5-flash",
    "gemini-1.5-flash-8b"
]

DEVELOPER_ID = DEVELOPER_ID                  # 開発者ID制限
🚀 start_sophia.sh
起動 Script
機能: Sophiaボット起動スクリプト
🔄 restart_loop.sh
再起動 Script
機能: 自動再起動ループスクリプト
📝 auto_commit.sh
Git Script
機能: 自動Git commitスクリプト
🔍 check_db.py
DB管理 Python
機能: データベース確認・管理ツール
📝 sophia_logger_cog.py
ログ Python
機能: ユーザーメッセージログ記録
ログ設定(Windowsパス)
# ログ対象ユーザー
TARGET_USERS = {
    DEVELOPER_ID: "USERNAME",              # ユーザーID: 名前
}

# ログ保存先(Windowsパス)
LOG_DIRECTORY = 'DRIVE:/Python/My_LLM_Project/user_logs'

# ログファイル命名規則
log_filename = f"{username}_messages_{datetime.now().strftime('%Y%m%d')}.txt"
Sophia Discord コマンド完全一覧
📊 統計情報
総コマンド数: 76個
Slash Commands: 71個
Context Menus: 5個
自動機能: 10個以上
対応システム: 11システム
🤖 メインシステム [sophia_bot.py, sophia_admin_cog.py]
メイン AI
Slash Commands
/restart4 - ソフィア再起動(開発者専用)
/switch_model - AIモデル切り替え(8種類のGemini選択可能)
自然言語機能
• メンション・トリガーワード反応(ソフィア、ソフィ、そふぃ)
• AIチャット(Gemini 2.5 Flash)
• 画像認識・解析対応
• 会話履歴管理
• ユーザー別応答調整
🎮 RPGシステム [RPG_cog.py]
RPG ゲーム
Slash Commands
/vlevel - レベル・ゴールド表示
/vinventory - インベントリ表示(ソート機能付き)
/vequip <ID> - アイテム装備
/vstats - 装備・ステータス表示
/vreroll <ID> - アイテム効果再抽選(同レア度5個消費)
/vsell <ID> - アイテム売却(複数指定可能)
/vbattle - ランダム敵とバトル
/vgacha - ガチャシステム
/vreset_rpg - RPGデータリセット(開発者専用)
自動機能・特徴
• メッセージ送信でEXP獲得・レベルアップ
• レベルアップ時のアイテムドロップ(7段階レアリティ)
• 装備による自動ロール付与
• 戦闘システム(攻撃・防御・逃走)
• 複雑なガチャシステム(3種類)
• インベントリ管理(上限有り)
• アイテム効果再抽選機能
🎵 音楽システム [sophia_audio_cog.py]
音楽 再生
Slash Commands
/join - ボイスチャンネル参加
/leave - ボイスチャンネル退出
/play <query> - 音楽再生(YouTube/Spotify・プレイリスト対応)
/play_random <channel> - 指定チャンネルからランダムURL再生
/interrupt <query> - キュー割り込み再生
/skip - 曲スキップ
/stop - 再生停止・キュークリア
/pause - 一時停止
/resume - 再生再開
/loop - 曲リピート切り替え
/loop_queue - キュー全体ループ切り替え
/clear - キューのみクリア
/queue - 再生待ちキュー表示
/help - ヘルプメニュー(5ページ構成)
対応機能・特徴
• YouTube・Spotify URL/検索対応
• プレイリスト自動展開・バックグラウンド処理
• 高品質音声ストリーミング(FFmpeg)
• ループ再生(曲・キュー両対応)
• チャンネル履歴からランダム再生
• 複数ギルド対応
• プレゼンス連動(再生中楽曲表示)
🏠 家電・環境監視システム [sophia_home_cog.py, sophia_monitor_cog.py]
家電 監視
Slash Commands(開発者専用)
/h pc on - PC電源操作
/h ac <action> - エアコン制御(on/off/temp)
  温度設定: /h ac temp 25(16-30℃)
Slash Commands(一般利用可能)
/hv meter - 環境センサー値表示
  温度・湿度・CO2・絶対湿度・露点温度・VPD
/hv plug - プラグミニ電力状況表示
  電源状態・電力・電圧・今日の使用量・電流
自動機能・特徴
• 環境センサー定期監視(3分間隔)
• しきい値超過時の自動アラート
• 段階的警告システム(注意→警告→危険)
• Webhook通知システム
• 重要アラート時のAI応答生成
• SwitchBot API連携
📰 情報収集システム [sophia_feed_monitor_cog.py, sophia_omikuji_cog.py, sophia_proactive_cog.py] [停止中]
RSS 情報
フィード監視コマンド
/q add <name> <url> <channel> - RSS/Atomフィード監視追加
/q list - 監視中ソース一覧表示
/q remove <IDs> - 監視ソース削除(複数指定可能)
テキスト反応・自動機能
おみくじ反応 - 「おみくじ」メッセージでAI生成運勢回答
  ラッキーカラー・アイテム・アドバイス付き

自動フィード監視:
• 10分間隔でのフィード更新チェック
• 新着記事の自動通知(OGP画像・AI生成コメント付き)
• デフォルトソース自動セットアップ(技術・AI・PCハード・ゲーム関連)

自発会話:
• 1日1回のランダム時刻での自発的投稿(12-20時)
• 最もアクティブなチャンネルを自動選択
• AI生成による自然な独り言
📋 コンテキストメニュー [sophia_context_menu_cog.py]
右クリック AI
右クリックメニュー(メッセージ対象)
このメッセージをAIで要約 - マルチメディア対応AI要約
  テキスト・画像・埋め込み・URL・YouTube動画の総合解析
  YouTube字幕取得・OGP画像解析・複数ソースの統合要約

このメッセージを一番下に表示し続ける - スティッキーメッセージ機能
  チャンネル最下部に常時表示・権限必要

このメッセージを後で消す - 時間指定削除
  6時間後・12時間後・24時間後から選択

メッセージを埋め込みにする - Embed形式変換
  通常テキストをリッチな埋め込み形式に変換

メッセージの文字数を数える - 文字数カウント
  正確な文字数を瞬時に表示
🛠️ 管理・ユーティリティ [sophia_logger_cog.py]
管理 ログ
自動ログ・監視機能
メッセージログ収集:
• 特定ユーザーのメッセージ自動ログ保存
• ユーザー別CSV出力
• タイムスタンプ付き記録

システム監視:
• ボット稼働状況監視
• エラー自動通知
• 再起動ループ対応
特別な機能・UI
UI インタラクション
Button/View インタラクション
ヘルプシステム:
• 5ページ構成のページネーション
• カテゴリ別詳細説明
• 検索機能付きヘルプ

RPGインタラクション:
• インベントリソート・ページング
• バトルシステム(攻撃・防御・逃走ボタン)
• ガチャ選択UI
• 装備確認ダイアログ
• アイテム交換UI

時間指定削除:
• 3つの時間選択ボタン
• キャンセル機能付き
高度なAI・API連携
AIモデル対応:
• Gemini 2.5 Pro/Flash系(8種類)
• 用途別モデル自動切り替え
• セーフティ設定無効化

外部API連携:
• YouTube Data・字幕API
• Spotify API
• SwitchBot API
• RSS/Atom パーサー
• OGP画像取得

データベース機能:
• SQLite による永続化
• RPGデータ・スティッキーメッセージ・フィード監視
• トランザクション管理
• 自動バックアップ
🔧 主要設定項目クイックリファレンス
🌐 環境変数
# 必須
GOOGLE_API_KEY=                             # Gemini AI API
DISCORD_BOT_TOKEN6=                         # Discord Bot Token
SWITCH_BOT_TOKEN=                           # SwitchBot API Token
SWITCH_BOT_CLIENT=                          # SwitchBot Client Secret
# 注意: README.mdではSWITCHBOT_SECRETと記載されているが、実際のコードではSWITCH_BOT_CLIENTを使用

# 音楽機能用
FFMPEG_PATH=                                # FFmpeg実行パス
SPOTIFY_CLIENT_ID=                          # Spotify API ID
SPOTIFY_CLIENT_SECRET=                      # Spotify API Secret
🏠 デバイス設定
DEVICE_IDS = {
    "pc": "DEVICE_PC_ID",
    "ac": "DEVICE_AC_ID",
    "co2_meter": "DEVICE_CO2_ID",
    "plug_mini": "DEVICE_PLUG_ID"
}
💰 RPG経済設定
# ガチャコスト
GACHA_SETTINGS = {
    "junk": {"cost_single": 5000},
    "influencer": {"cost_single": 30000},
    "vip": {"cost_single": 100000}
}

# 売却価格
SELL_PRICES = {
    "common": 500,
    "legendary": 10000,
    "unique": 50000
}
🌡️ 環境監視しきい値
THRESHOLDS = {
    "temperature": {"L": 20.0, "H": 28.0},
    "humidity": {"L": 30.0, "H": 60.0},
    "co2": {"H": 1000, "HH": 1500},
    "power": {"H": 300.0, "HH": 500.0}
}