Skip to content

Repository files navigation

ChatGPT Image Bot 🎨

透過 ChatGPT Web 生成圖片的 Telegram Bot。CloakBrowser 驅動,支援文字 prompt、以圖生圖、連續修改、多使用者排隊與 Admin 通知。

功能

demo

功能 說明
/imagine <prompt> 文字 prompt 生圖
傳送照片 以圖為參考,再輸入提示詞
連續修改模式 出圖後直接傳文字修改(無限迭代)
/done 結束修改模式
排隊機制 同時只能處理一個請求,多的自動排隊
訪客驗證 非 Admin 需輸入密碼 JUJU 解鎖
Admin 通知 其他使用者生圖完成/失敗時自動通知 Admin(可透過 /notify 開關)

安裝

cd ~/.hermes/chatgpt-bot
./manage.sh setup                 # 建立 venv + 安裝套件

設定

1. 建立 Telegram Bot

  1. 打開 Telegram,搜尋 @BotFather
  2. /newbot → 取名 → 取 username
  3. BotFather 給你 token(格式:1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
  4. /setprivacy → 選你的 bot → Disable(關閉 privacy mode)

2. 取得你的 Telegram User ID

搜尋 @userinfobot → 傳任意訊息 → 取得 numeric ID

3. 設定環境變數

cp .env.example .env

編輯 .env

TG_BOT_TOKEN=你的_token
TG_ADMIN_ID=你的_id

4. 登入 ChatGPT

./manage.sh login

這會開啟一個可見的 Chrome 視窗,導向 chat.openai.com。 手動登入後,按 Enter 鍵保存 session。

Cookie 過期時 /status 會顯示未登入,執行 ./manage.sh login 重登。

啟動

# 方法 1: 手動背景執行
./manage.sh start

# 方法 2: launchd 服務(自動重啟)
./install_service.sh

管理

./manage.sh status       # 查看狀態
./manage.sh logs         # 即時日誌
./manage.sh stop         # 停止
./manage.sh restart      # 重啟
./manage.sh login        # 重新登入 ChatGPT

Bot 指令

輸入 說明 權限
/imagine <prompt> 文字生圖 已驗證使用者
傳送照片 存照片 → 問提示詞 → 以圖生圖 已驗證使用者
傳文字 出圖後修改模式下:送修改 prompt 已驗證使用者
/done 結束修改模式 已驗證使用者
/cancel 取消等待中的提示詞 已驗證使用者
/status 系統狀態 + 完整指令面板 Admin 限定
/login 開始 ChatGPT 手動登入 Admin 限定
/login_done 確認手動登入完成 Admin 限定
/restart 重啟瀏覽器 session Admin 限定
/notify 開關其他使用者的生圖通知 Admin 限定
/start / /help 顯示歡迎訊息(一般使用者指令) all

工作流程

初次生圖

使用者 → /imagine 貓咪
    Bot → 📤 正在處理...
    Bot → ChatGPT Web 生成中...
    Bot → ✅ [圖片] | prompt: 貓咪
    Bot → 回傳文字可繼續修改這張圖,或傳 /done 結束

連續修改

使用者 → 把貓變成橘色的
    Bot → 📤 正在處理...
    Bot → ✅ [修改後圖片]
    Bot → 回傳文字可繼續修改...
使用者 → 加上墨鏡
    Bot → ✅ [再次修改圖片]
使用者 → /done
    Bot → 修改模式已結束

以圖生圖

使用者 → [傳送照片]
    Bot → 圖片已收到。請輸入提示詞...
使用者 → 把這個產品放在沙灘上
    Bot → ✅ [生成圖片]

多使用者

使用者 A → /imagine 城市夜景  (第 1 位)
使用者 B → /imagine 日落      (第 2 位,排隊中)
    A 完成後 B 自動開始
Admin 收到 A 完成通知
Admin 收到 B 完成通知

驗證機制

  • Admin(TG_ADMIN_ID):直接使用,無需密碼
  • 其他人:首次使用時輸入密碼 JUJU 解鎖
  • 密碼存在記憶體中,Bot 重啟後需重新輸入

修改模式

出圖後 Bot 自動進入修改模式:

  • 傳送任意文字 → 在同一個 ChatGPT 對話串追加修改 prompt
  • 每次修改完成後再次進入修改模式(可無限迭代)
  • /done → 退出
  • 修改期間不影響其他使用者的佇列排隊

元件說明

chatgpt.py — ChatGPT Web 自動化引擎

  • CloakBrowser 驅動的 stealth Chromium
  • Cookie 持久化:重啟自動複用 session
  • generate_image(prompt, image_path=None, new_conversation=True)
    • new_conversation=True:開新對話生圖
    • new_conversation=False:在同個對話追加 prompt(修改模式)
  • 失敗時自動擷取 GPT 回覆文字傳回使用者

bot.py — Telegram Bot Handler

  • python-telegram-bot 框架
  • 單線程佇列(_job_queue),一次處理一個生成
  • _modifiable_chats:追蹤哪些 chat 處於修改模式
  • _admin_notify_enabled + _notify_admin():Admin 通知開關 + 自動推送

main.py — 入口點

  • --login:互動式 ChatGPT 登入
  • --status:快速健康檢查
  • 正常模式:啟動 Telegram polling + ChatGPT session

目錄結構

~/.hermes/chatgpt-bot/
├── config.py              # 環境變數 & 路徑設定
├── chatgpt.py             # CloakBrowser ChatGPT 自動化引擎
├── bot.py                 # Telegram Bot handler
├── main.py                # 入口點
├── manage.sh              # 管理腳本
├── install_service.sh     # launchd 服務安裝
├── com.laban.chatgpt-bot.plist  # launchd 設定
├── .env.example           # 環境變數範例
├── .gitignore
├── requirements.txt       # Python 依賴
├── README.md              # 本文件
├── docs/                  # 文件圖片(demo.jpg)
├── venv/                  # Python 虛擬環境
├── cookies/               # ChatGPT session cookies
├── temp/                  # 暫存圖片(ref / generated / debug)
└── logs/                  # 日誌

限制

  • ChatGPT 登入 cookie 約 1-2 個月過期,需重新登入
  • 生成的圖像解析度取決於 ChatGPT 使用的 DALL-E / GPT-4o 版本
  • 單線程佇列 — 一次只能處理一個生成請求
  • ChatGPT 前端更新時可能需調整 selectors(chatgpt.py 開頭的 SELECTORS dict)

Selector 維護

ChatGPT 前端頻繁更新,當 Bot 無法正常生圖時,檢查 chatgpt.pySELECTORS

Key 用途 常見 DOM 特徵
chat_input 輸入框 #prompt-textarea, div[contenteditable="true"]
send_button 傳送按鈕 button[data-testid="send-button"]
generated_image 生成的圖片 img[alt*="已產生"]
streaming_indicator 串流中指示器 button[data-testid="stop-button"]
assistant_message 失敗時擷取 GPT 回覆 [data-message-author-role="assistant"]
new_chat_button 開新對話 a[href="/"], "New chat" 按鈕
file_input 上傳圖片 input[type="file"]

版本控制

git log        # 檢視紀錄
git diff       # 檢視修改
git commit -m "說明"   # 提交

About

Telegram Bot — ChatGPT Web image generation via CloakBrowser

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages