一個基於 Python discord.py、Google 最新 google-genai SDK (Gemini 3.7 Flash) 與 FastAPI 打造的多功能高品質 Discord 機器人。
本機器人具備 AI 角色扮演對話 (多角色切換 / 多模態圖片與大頭貼辨識 / 雙層自適應記憶學習 / 情緒貼圖 / 動態聊天室上下文)、YouTube 影片即時推送通知 (WebSub 鉤子 + RSS 雙軌機制),以及 獨立 Bot 管理層與 VIP 限額白名單系統。
- 多角色動態切換:支援自訂多組
persona_*.txt人設 Prompt 與對應的persona_*_setting.json設定檔,可透過下拉選單一鍵切換。 - 頭像與暱稱同步變更:切換角色時,機器人會自動將 Discord 伺服器暱稱與全域頭像(支援
PNG、JPG、WEBP)同步更新為該角色。 - 🧠 雙層自適應記憶與學習系統:背景自動異步萃取對話(包含文字與圖片梗圖),動態更新「群組文化與內部梗 (
guild_cultures.json)」與「活躍使用者個人印象 (user_profiles.json)」,實現越聊越懂你的深度默契。 - 聊天室動態上下文 (Ambient Context):@標記機器人時,自動抓取頻道內最近 30 條聊天紀錄(包含 Bot 本人之前的發言),AI 完美理解對話前後文。
- 跨時空回覆 (Reply) 目標精準抓取:對極早以前的舊訊息點擊 Discord「回覆」時,機器人會精準抓取該條被回覆目標訊息進行回答。
- 智慧多模態視覺與大頭貼辨識:
- 支援直接上傳圖片、回覆目標圖片分析。
- 依用戶意圖智能下載歷史圖片,降低 Token 消耗。
- 支援即時抓取並分析用戶或指定成員的 Discord 大頭貼/頭像 (Avatar)。
- 情感表情包自動附圖:AI 依據情緒在回覆末端輸出標籤(如
[EMOTION: happy]),自動附帶傳送assets/emotions/下的對應 PNG 貼圖。 - 持續輸入中 (KeepTyping 心跳機制):AI 思考期間背景自動每 4.5 秒發送一次
typing()心跳封包,輸入中狀態 100% 不間斷亮起。 - 長文解禁與自動切塊:Gemini 輸出 Token 提高至 2048;超過 Discord 2000 字限制時自動拆分為多頁訊息順序發送。
- WebSub (PubSubHubbub) + RSS 雙軌機制:
- 主推:FastAPI 提供 Port 8080 Webhook 接收 YouTube 官方即時秒級推送。
- 備援:背景自動每 3 分鐘輪詢 RSS Feed,確保通知零漏發。
- 頻道綁定與多頻道分發:不同 Discord 文字頻道可訂閱不同的 YouTube 頻道,通知自動精準發送至當時輸入指令的頻道。
- SQLite 持久化儲存:訂閱紀錄自動寫入
data/subscriptions.db,重啟或遷移不丟失。
- User ID 嚴格權限防護:管理權限完全獨立於 Discord 伺服器權限,僅限
admin_user_ids白名單中的 Discord User ID 執行管理。 /admin_panel互動式控制面板:針對管理員提供專屬私人彈出介面(ephemeral=True),點擊按鈕即可觸發 Modal 彈出視窗設定 User ID。- 動態可配置對話上限:非 VIP 成員設有每日對話上限(預設 10 次,每日午夜自動重置),額度用盡時觸發角色專屬警告訊息;VIP 成員享有無限次數對話。
| 斜線指令 | 權限限制 | 功能說明 |
|---|---|---|
/chat <prompt> [image] |
全員 | 與目前的 AI 角色進行對話(支援附加圖片) |
/chg_persona [filename] |
Bot Admin | 切換 AI 角色設定檔(留空則彈出互動下拉選單) |
/list_personas |
全員 | 列出目前可用的所有角色設定檔與對應的設定 JSON |
/view_memory |
全員 | 檢視 AI 角色對目前群組文化與您的專屬記憶與印象 |
/bot_info |
全員 | 以當前角色性格回報系統狀態、運行資訊與個人對話額度 |
/reset_chat |
全員 | 清除目前頻道的 AI 對話歷史記憶 |
| 斜線指令 | 權限限制 | 功能說明 |
|---|---|---|
/sub_yt <url> |
伺服器管理員 | 訂閱指定的 YouTube 頻道,將通知發送至目前頻道 |
/unsub_yt |
伺服器管理員 | 移除目前 Discord 頻道的指定 YouTube 訂閱 |
/list_yt |
全員 | 查看目前頻道訂閱的 YouTube 頻道清單 |
| 斜線指令 | 權限限制 | 功能說明 |
|---|---|---|
/admin_panel |
Bot Admin | 🎛️ 開啟 Bot 專屬私人互動控制面板(點擊按鈕彈窗操作) |
/vip_list |
全員 | 查看 Bot 管理員名單、VIP 白名單與每日對話上限設定 |
💡 提示:管理員亦可在 Discord 頻道中輸入文字指令
!sync來強制重新整理與同步斜線指令。
dc_auto_bot/
├── main.py # Bot & FastAPI 啟動入口 (併行運作與指令同步)
├── config.py # 環境變數與設定載入器
├── requirements.txt # Python 依賴套件套件清單
├── Dockerfile # Docker 容器化部署設定
├── README.md # 專案說明文件
│
├── utils/
│ ├── vip_manager.py # 👑 獨立 VIP 與 Bot 管理員 User ID 白名單管理模組
│ └── memory_manager.py # 🧠 雙層自適應記憶與群組/個人學習管理模組
│
├── cogs/
│ ├── ai_roleplay.py # 🎭 Gemini 3.7 Flash 角色扮演對話 Cog
│ ├── admin.py # 🎛️ /admin_panel 管理員與 VIP 控制面板 Cog
│ └── youtube.py # 📺 YouTube WebSub & RSS 推送通知 Cog
│
├── data/
│ ├── subscriptions.db # YouTube 訂閱 SQLite 資料庫
│ ├── vip_config.json # VIP 與 Bot 管理員 User ID 白名單設定檔
│ ├── vip_usage.json # 非 VIP 每日對話次數紀錄檔
│ ├── guild_cultures.json # 🧠 各伺服器群組文化與內部梗記憶庫
│ ├── user_profiles.json # 🧠 各活躍使用者個人印象記憶庫
│ └── personas/
│ ├── active_persona.txt # 當前生效的角色狀態指標
│ ├── persona_default.txt / .json # 預設角色 (愛莉)
│ ├── persona_mornye.txt / .json / .webp # 莫寧 (鳴潮)
│ ├── persona_aemeath.txt / .json / .webp # 愛彌斯 (鳴潮)
│ ├── persona_daniya.txt / .json / .webp # 達妮婭 (鳴潮)
│ └── persona_liino.txt / .json / .webp # 梨諾 (終末地)
│
└── assets/
└── emotions/ # AI 情感表情包 PNG 圖片 (happy.png, thinking.png...)
git clone <your-repo-url>
cd dc_auto_bot
# 建立並啟用虛擬環境 (推薦)
python -m venv venv
venv\Scripts\activate # Windows
source venv/bin/activate # Linux/Mac
# 安裝所需套件
pip install -r requirements.txt在專案根目錄建立 .env 檔案(可參考 .env.example):
# Discord 機器人 Token
DISCORD_TOKEN=your_discord_bot_token_here
# Google Gemini API Key 與模型設定
GEMINI_API_KEY=your_gemini_api_key_here
GEMINI_MODEL=gemini-3.7-flash
# Webhook 對外服務網址 (YouTube WebSub 接收用)
WEBHOOK_BASE_URL=https://your-domain.com
WEBHOOK_PORT=8080- 前往 Discord Developer Portal。
- 點擊你的 Application ➡️ 左側選單選擇 Bot。
- 往下滑找到 Privileged Gateway Intents 區塊。
- 將
MESSAGE CONTENT INTENT開關切換為 開啟 (ON / 藍色) 並儲存。
python main.py- 機器人啟動時會自動讀取 Bot Application Owner ID 作為第一位 Bot 超級管理員。
- 首次啟動或更新指令後,可在 Discord 輸入
!sync,並在 Discord 按Ctrl + R刷新介面。
# 建置 Docker 映像檔
docker build -t dc-auto-bot .
# 運行 Docker 容器
docker run -d --name dc_bot -p 8080:8080 --env-file .env dc-auto-bot本專案採用 MIT License 授權。