From 3da9ba247c24d919d95ea4a1ab35cccf465fe7d6 Mon Sep 17 00:00:00 2001 From: ogt Date: Mon, 20 Apr 2026 06:03:30 +0800 Subject: [PATCH] remove: delete defunct momo-telegram-bot service MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This service was a dead-weight remnant from early development: - Only 148 lines, no real business logic (just a startup scaffold) - Supported /trend /search /copy /keywords — all superseded by OpenClaw - Used same Bot Token as OpenClaw → called deleteWebhook on startup, destroying OpenClaw webhook and causing /menu and all commands to fail - JobQueue not installed so daily push also did not work Actions taken: - Stopped and removed momo-telegram-bot container - Removed telegram-bot service block from docker-compose.yml on 188 - Deleted run_telegram_bot.py from repo - Webhook re-set to https://mo.wooo.work/bot/telegram/webhook --- run_telegram_bot.py | 148 -------------------------------------------- 1 file changed, 148 deletions(-) delete mode 100644 run_telegram_bot.py diff --git a/run_telegram_bot.py b/run_telegram_bot.py deleted file mode 100644 index ecf023d..0000000 --- a/run_telegram_bot.py +++ /dev/null @@ -1,148 +0,0 @@ -#!/usr/bin/env python3 -""" -Telegram Bot 獨立執行腳本 - -用法: - python run_telegram_bot.py - -環境變數: - TELEGRAM_BOT_TOKEN: Telegram Bot Token (必填) - -功能: - - 啟動 Telegram Bot 監聽 - - 每日 09:00 推播趨勢摘要 - - 處理用戶指令:/trend, /search, /copy, /keywords, /daily, /settings -""" - -import os -import sys -import asyncio -import logging -from datetime import datetime, time -from dotenv import load_dotenv - -# 載入環境變數 -load_dotenv() - -# 設定日誌 -logging.basicConfig( - level=logging.INFO, - format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', - handlers=[ - logging.StreamHandler(), - logging.FileHandler('logs/telegram_bot.log', encoding='utf-8') - ] -) -logger = logging.getLogger('TelegramBot') - -def check_dependencies(): - """檢查必要的套件""" - try: - from telegram import Update - from telegram.ext import Application - logger.info("✅ python-telegram-bot 已安裝") - return True - except ImportError: - logger.error("❌ 請安裝 python-telegram-bot: pip install python-telegram-bot") - return False - -def check_token(): - """檢查 Bot Token""" - token = os.getenv('TELEGRAM_BOT_TOKEN') - if not token: - logger.error("❌ 請在 .env 設定 TELEGRAM_BOT_TOKEN") - logger.info(" 1. 在 Telegram 搜尋 @BotFather") - logger.info(" 2. 發送 /newbot 建立新 Bot") - logger.info(" 3. 複製 Token 到 .env 檔案") - return None - logger.info("✅ Bot Token 已設定") - return token - -async def main(): - """主程式""" - print("=" * 60) - print(" MOMO Pro System - Telegram Bot") - print("=" * 60) - print() - - # 檢查依賴 - if not check_dependencies(): - sys.exit(1) - - # 檢查 Token - token = check_token() - if not token: - sys.exit(1) - - # 導入 Bot 服務 - try: - from services.telegram_bot_service import TelegramBotService - logger.info("✅ TelegramBotService 已載入") - except ImportError as e: - logger.error(f"❌ 無法載入 TelegramBotService: {e}") - sys.exit(1) - - # 建立 Bot 服務 - bot_service = TelegramBotService(token) - - # 取得 Application - app = bot_service.get_application() - - if not app: - logger.error("❌ 無法建立 Bot Application") - sys.exit(1) - - # 設定每日推播排程 (每天 09:00) - from telegram.ext import JobQueue - - async def daily_summary_job(context): - """每日摘要推播任務""" - logger.info("📤 執行每日趨勢摘要推播...") - await bot_service.send_daily_summary() - - # 啟動 Bot - logger.info("🚀 啟動 Telegram Bot...") - logger.info(" 指令列表:") - logger.info(" /trend [分類] - 查看熱門趨勢") - logger.info(" /search [關鍵字] - AI 網路搜尋") - logger.info(" /copy [商品名] - 生成行銷文案") - logger.info(" /keywords - 熱門關鍵字") - logger.info(" /daily - 每日趨勢摘要") - logger.info(" /settings - 通知設定") - print() - - # 初始化並啟動 - await app.initialize() - await app.start() - - # 設定每日推播 (09:00 台北時間) - job_queue = app.job_queue - if job_queue: - # 計算下一個 09:00 的時間 - target_time = time(hour=9, minute=0, second=0) - job_queue.run_daily(daily_summary_job, time=target_time, name='daily_summary') - logger.info("📅 已設定每日 09:00 推播趨勢摘要") - - # 開始輪詢 - await app.updater.start_polling(drop_pending_updates=True) - - logger.info("✅ Bot 已啟動,按 Ctrl+C 停止") - - # 保持運行 - try: - while True: - await asyncio.sleep(1) - except KeyboardInterrupt: - logger.info("🛑 收到停止信號...") - finally: - await app.updater.stop() - await app.stop() - await app.shutdown() - logger.info("👋 Bot 已停止") - -if __name__ == '__main__': - # 確保 logs 目錄存在 - os.makedirs('logs', exist_ok=True) - - # 執行 - asyncio.run(main())