[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80055":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":15,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":14,"lastSyncTime":29,"discoverSource":30},80055,"tg-watchbot","GongyiChuren\u002Ftg-watchbot","GongyiChuren","Tg-Watchbot：Telegram 双向对话 Bot + 网页关键词推送 + 可视化面板","",null,"Python",109,25,2,1,0,14,38,11,57.04,"MIT License",false,"main",true,[],"2026-06-12 04:01:26","\u003Cdiv align=\"center\">\n  \u003Ch1>tg-watchbot\u003C\u002Fh1>\n  \u003Cp>Telegram 双向客服机器人 + Web\u002FRSS 监控推送 + 频道媒体下载 + 可视化管理面板\u003C\u002Fp>\n  \u003Cp>双向对话 · 关键词监控 · 频道媒体下载 · 私聊广告拦截 · 多管理员 · 配置导入导出\u003C\u002Fp>\n  \u003Cp>\n    \u003Ca href=\"#ai-one-line-install\">AI 一句话安装\u003C\u002Fa> ·\n    \u003Ca href=\"#docker-install\">Docker 安装\u003C\u002Fa> ·\n    \u003Ca href=\"#manual-install\">手动安装\u003C\u002Fa> ·\n    \u003Ca href=\"#systemd-install\">systemd 部署\u003C\u002Fa> ·\n    \u003Ca href=\"#面板路由\">面板路由\u003C\u002Fa> ·\n    \u003Ca href=\"#更新日志\">更新日志\u003C\u002Fa>\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n\n## 简介：\ntg-watchbot 是一个轻量级 Python 服务，把 **Telegram 双向客服机器人**、**Web\u002FRSS 监控推送** 和 **频道媒体下载** 合在一起：\n\n- 普通用户私聊 Bot，消息会转发给管理员；\n- 管理员可以直接回复、主动发文字\u002F图片、封禁\u002F备注用户；\n- 后台定时监控 RSS 或网页，命中关键词、新条目、价格\u002F库存变化后推送给管理员；\n- 使用 Telethon 用户账号自动下载频道\u002F群组中的视频、文档等媒体文件；\n- 自带一个 Web 管理面板，可配置监控目标、编辑 YAML、查看收件箱和日志。\n\n项目为单文件应用，适合个人服务器、NAT 小鸡、轻量 VPS 直接用 systemd 跑。\n\u003Ca id=\"ai-one-line-install\">\u003C\u002Fa>\n\n## AI 一句话安装\n```\n请克隆 `https:\u002F\u002Fgithub.com\u002FGongyiChuren\u002Ftg-watchbot.git` 到本机，默认使用 Docker 按 README 的 `Docker 安装（含自启）` 启动服务；若无 Docker，则按 `快速开始` 走 Python 和 systemd 部署直接安装。启动后打开 `http:\u002F\u002F127.0.0.1:8765`，安装完成后提醒用户记得在面板填写 `TELEGRAM_BOT_TOKEN` 和 `ADMIN_CHAT_ID` 并在之后保存并执行重启（Docker 用 `docker compose restart`，直接安装用重启进程）。\n``` \n## 更新日志\n\n### 2026-05-28 更新\n\n- 新增「频道媒体转发」：使用 Telethon 用户账号登录 TG，实时转发群组\u002F频道消息到你的 Telegram。\n- 面板新增「频道媒体」页面：搜索已加入群组，一键添加转发监控。\n- 支持暂停\u002F恢复监控（保留配置）、删除监控。\n- 支持关键词过滤：只转发包含特定关键词的消息，留空则转发全部。\n- 支持媒体类型过滤：可选视频、文档、图片、音频。\n- 支持 SOCKS5\u002FHTTP 代理，适合国内服务器。\n- 内置下载到服务器、断点续传、并发下载等功能，后续可通过配置开启。\n- 需要在设置页填写 `TG_API_ID`、`TG_API_HASH`、`TG_API_SESSION` 后使用。\n\n### 2026-05-22 更新\n\n- TG 群监听功能增强：支持可视化配置监听规则、AI 总结参数与防刷屏策略。\n- TG 群监听新增“已发现群聊”：自动显示 Bot 收到过消息的群聊 `chat_id`，可一键创建监听。\n- TG 群监听新增“监听来源”选项：`Bot` \u002F `用户会话`（可用于 Bot 无法加入的群）。\n- 设置页新增 `TG_API_ID`、`TG_API_HASH`、`TG_API_SESSION` 可视化配置；用于用户会话监听。\n- 新增 `\u002Fupdate` 安全更新流程：显示本地\u002F远端 commit、ahead\u002Fbehind、工作区状态；仅允许 `ff-only` 更新。\n- 更新前若检测到本地未提交改动，会拒绝更新；避免覆盖本地代码。\n- 新增“回滚上次更新”按钮：更新前自动记录回滚点，可一键回滚并重启。\n- TG 群监听 AI 总结新增可视化高级控制：`ai_prompt`、`ai_min_interval_seconds`、`ai_dedupe_window_seconds`。\n- TG 群监听增加限频和去重窗口，降低重复推送与 AI 调用成本；AI 失败时仍会回退模板摘要。\n- 监控面板新增可观测状态：最近成功\u002F失败时间、最近错误、耗时、推送数、连续失败次数。\n\n### 2026-05-21 第二次更新\n\n- Web 面板新增收件箱直接回复、用户管理、快捷回复、私聊广告拦截、监控推送历史、配置导入\u002F导出。\n- 收件箱改为完整双向对话记录：用户消息、Web 回复、TG 管理员回复都会显示。\n- 用户管理页新增 Bot \u002F 面板配置卡片，和设置页共用同一份配置；修改 Token、管理员 ID、端口、账号或密码后需要重启。\n- `ADMIN_CHAT_ID` 支持最多 3 个管理员，用逗号分隔。\n- 单个监控可关闭 Telegram 推送，只记录到 Web 推送历史。\n\n### 2026-05-21 第一次更新\n\n- 默认启动改为先启动 Web 面板：未填写 `TELEGRAM_BOT_TOKEN` \u002F `ADMIN_CHAT_ID` 时，面板仍可打开，同时 Telegram 收发、监控推送不可用。\n- 面板配置页可填写 Bot Token、管理员 ID、面板账号和清理策略；保存后需要重启服务让 Bot 配置生效。\n- 修复到期消息删除：监控推送消息支持到期自动删除，默认 `60` 分钟。\n- 保存配置时会保留 `WEB_PANEL_SESSION_SECRET`，避免保存后登录状态被重置。\n- Web 面板界面和站点图标已更新优化。\n\n## 功能\n\n### Telegram 双向机器人\n\n- 使用官方 Telegram Bot API，不做 userbot\u002Fselfbot。\n- `\u002Fstart` 建立用户和管理员之间的联系。\n- 用户消息先写入 SQLite，再转发给管理员，避免转发失败时丢消息。\n- 管理员可通过“回复转发消息”直接回给原用户。\n- 支持显式命令：\n  - `\u002Freply \u003Cuser_id> \u003C内容>`：给指定用户发文字；\n  - `\u002Fsendpic \u003Cuser_id> [说明]`：给指定用户发图片；\n  - `\u002Fblock \u003Cuser_id>`：封禁用户；\n  - `\u002Funblock \u003Cuser_id>`：解封用户；\n  - `\u002Fnote \u003Cuser_id> \u003C备注>`：给用户加备注；\n  - `\u002Fwho \u003Cuser_id>`：查看用户信息；\n  - `\u002Fspamwords`：查看广告关键词；\n  - `\u002Fspamadd \u003C关键词>`：添加广告关键词；\n  - `\u002Fspamdel \u003C关键词>`：删除广告关键词；\n  - `\u002Fcancel`：取消待发送图片。\n- 普通用户有简单限流，防止刷屏。\n- 支持最多 3 个管理员 chat id，用逗号分隔配置。\n- 支持私聊广告关键词自动拦截和自动拉黑，不影响 RSS\u002FWeb 监控。\n\n![示例图片](https:\u002F\u002Fpic.gongyichuren.de\u002Ffile\u002F1779287173835_8521cab29a9635743a603582ceb7ba02.png)\n\n### Web\u002FRSS 监控\n\n- 支持两类监控：\n  - `rss`：解析 RSS\u002FAtom 条目；\n  - `web`：用 CSS selector 抓网页条目、标题、链接、价格、库存。\n- 支持触发条件：\n  - 关键词命中；\n  - 新条目；\n  - 价格变化；\n  - 库存变化。\n- 支持论坛 RSS 增强字段：作者、分类、tags、摘要。\n- 支持去重，避免同一条反复推送。\n- 支持屏蔽词、作者、分类过滤（YAML 高级配置）。\n- 单个监控可关闭 Telegram 推送，只记录到 Web 推送历史。\n- 默认最低监控间隔为 60 秒。\n\n![示例图片](https:\u002F\u002Fpic.gongyichuren.de\u002Ffile\u002F1779287170665_17b7c8b4040d6334ea62a108d08db644.png)\n\n### 频道媒体下载\n\n- 使用 Telethon 用户账号（非 Bot）登录 Telegram，可访问已加入的所有频道和群组。\n- 面板「频道媒体」页面支持搜索已加入的群组\u002F频道，一键添加监控。\n- 支持暂停\u002F恢复监控（保留配置）、删除监控。\n- 支持实时自动下载新消息中的媒体，也支持手动触发下载历史媒体。\n- 支持断点续传：大文件下载中断后自动续传，不重复下载。\n- 支持并发下载控制：可设置同时下载数（1-10，默认 3）。\n- 支持 SOCKS5\u002FHTTP 代理，适合国内服务器使用。\n- 支持按日期范围过滤：只下载指定时间段内的消息。\n- 支持关键词过滤、媒体类型选择（视频\u002F文档\u002F图片\u002F音频）、文件大小限制。\n- 支持实时转发模式：群消息匹配后直接转发到你的 Telegram（含视频\u002F文档原文），无需下载到服务器。\n- 下载完成可自动推送 Telegram 通知给管理员。\n- 需要在设置页填写 `TG_API_ID`、`TG_API_HASH`、`TG_API_SESSION`。\n\n### Web 管理面板\n\n- 登录页 + HttpOnly session cookie，不使用丑陋的浏览器 Basic Auth。\n- 监控列表、新增、编辑、删除、手动检查、预览。\n- NodeSeek \u002F Linux.do RSS 模板。\n- 批量新增监控。\n- YAML 高级编辑。\n- Bot Token \u002F 管理员 ID \u002F 面板账号配置页。\n- 收件箱页面，可查看完整双向对话记录、重试转发、直接回复。\n- 用户管理页，可备注、封禁、解封、主动发消息，并可编辑 Bot \u002F 面板配置。\n- 私聊广告拦截规则和快捷回复模板可在 Web 面板编辑。\n- 监控推送历史页，可查看 Telegram 推送和仅 Web 记录。\n- `config.yaml` 导入\u002F导出页面，方便迁移。\n- 主动发消息页面 `\u002Fsend`，发送成功后会在页面显示结果，并给管理员聊天发送确认提醒。\n- 自动清理监控\u002FRSS\u002F网站状态数据；支持定时删除 Telegram 监控通知消息；不会删除用户、收件箱、双向对话消息。\n- 日志页面和健康检查 `\u002Fhealth`。\n\n![示例图片](https:\u002F\u002Fpic.gongyichuren.de\u002Ffile\u002F1779345259571_image.png)\n![新版面板截图](https:\u002F\u002Fpic.gongyichuren.de\u002Ffile\u002F1779437104636_image.png)\n![新版群监听截图](https:\u002F\u002Fpic.gongyichuren.de\u002Ffile\u002F1779437050727_image.png)\n\n## 使用的开源库\n\n本项目的业务逻辑为自写，主要使用并参考了以下开源库的公开 API 和常见用法：\n\n- [`aiogram`](https:\u002F\u002Fgithub.com\u002Faiogram\u002Faiogram)：Telegram Bot API、命令、消息处理、复制\u002F发送消息。\n- [`FastAPI`](https:\u002F\u002Fgithub.com\u002Ffastapi\u002Ffastapi)：Web 管理面板、表单、路由、中间件。\n- [`Uvicorn`](https:\u002F\u002Fgithub.com\u002Fencode\u002Fuvicorn)：ASGI 服务运行。\n- [`APScheduler`](https:\u002F\u002Fgithub.com\u002Fagronholm\u002Fapscheduler)：异步定时监控任务。\n- [`httpx`](https:\u002F\u002Fgithub.com\u002Fencode\u002Fhttpx)：异步 HTTP 抓取。\n- [`feedparser`](https:\u002F\u002Fgithub.com\u002Fkurtmckee\u002Ffeedparser)：RSS\u002FAtom 解析。\n- [`Beautiful Soup`](https:\u002F\u002Fwww.crummy.com\u002Fsoftware\u002FBeautifulSoup\u002F)：HTML 解析和 CSS selector 抽取。\n- [`PyYAML`](https:\u002F\u002Fpyyaml.org\u002F)：`config.yaml` 配置读写。\n- [`python-dotenv`](https:\u002F\u002Fgithub.com\u002Ftheskumar\u002Fpython-dotenv)：读取 `.env`。\n- Python 标准库 `sqlite3`：消息、用户、去重、监控状态持久化。\n\n## 友链\n\n- [Linux.do](https:\u002F\u002Flinux.do)\n- [NodeSeek](https:\u002F\u002Fwww.nodeseek.com)\n\n## 安全说明\n\n- 如果要把面板暴露到公网，建议使用 Cloudflare Access \u002F 反代鉴权，并使用强密码。\n- Bot 只能给“已经主动私聊过 Bot 的用户”发消息，这是 Telegram Bot API 的限制。\n\n## 快速开始\n\n\u003Ca id=\"docker-install\">\u003C\u002Fa>\n## Docker 安装（含自启）\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FGongyiChuren\u002Ftg-watchbot.git tg-watchbot\ncd tg-watchbot\ncp .env.example .env\ncp config.example.yaml config.yaml\ntouch tg-watchbot.sqlite3 tg-watchbot.log\ndocker compose up -d --build\n```\n\nDocker 会在容器内监听 `0.0.0.0:8765`，宿主机仍然打开 `http:\u002F\u002F127.0.0.1:8765`。\n\n查看状态与日志：\n\n```bash\ndocker compose ps\ndocker compose logs -f\n```\n\n修改配置后重启：\n\n```bash\ndocker compose restart\n```\n\n\u003Ca id=\"manual-install\">\u003C\u002Fa>\n## 手动安装（Python）\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FGongyiChuren\u002Ftg-watchbot.git tg-watchbot\ncd tg-watchbot\npython3 -m venv .venv\n.\u002F.venv\u002Fbin\u002Fpip install -U pip\n.\u002F.venv\u002Fbin\u002Fpip install -r requirements.txt\ncp .env.example .env\ncp config.example.yaml config.yaml\n```\n\n启动：\n\n```bash\n.\u002F.venv\u002Fbin\u002Fpython app.py\n```\n\n打开面板：\n\n```text\nhttp:\u002F\u002F127.0.0.1:8765\n```\n\n默认账号来自 `.env.example`：\n\n```text\n用户名：admin\n密码：change-me\n```\n\n登录后进入“设置”，填写 Bot Token、管理员 Telegram 数字 chat id、面板账号和密码。保存后重启服务，Bot 才会开始收发 Telegram 消息和发送监控通知。\n\n手动跑一次监控：\n\n```bash\n.\u002F.venv\u002Fbin\u002Fpython app.py --run-once\n```\n\n\u003Ca id=\"systemd-install\">\u003C\u002Fa>\n## systemd 部署\n\n推荐部署到 `\u002Fopt\u002Ftg-watchbot`：\n\n```bash\nsudo useradd --system --no-create-home --shell \u002Fusr\u002Fsbin\u002Fnologin tg-watchbot || true\nsudo mkdir -p \u002Fopt\u002Ftg-watchbot\nsudo chown -R \"$USER:$USER\" \u002Fopt\u002Ftg-watchbot\n\ncd \u002Fopt\u002Ftg-watchbot\ngit clone https:\u002F\u002Fgithub.com\u002FGongyiChuren\u002Ftg-watchbot.git .\npython3 -m venv .venv\n.\u002F.venv\u002Fbin\u002Fpip install -U pip\n.\u002F.venv\u002Fbin\u002Fpip install -r requirements.txt\ncp .env.example .env\ncp config.example.yaml config.yaml\n\n# 先用前台模式打开面板，确认能登录和保存配置\n.\u002F.venv\u002Fbin\u002Fpython app.py\n```\n\n在服务器本机打开：\n\n```text\nhttp:\u002F\u002F127.0.0.1:8765\n```\n\n默认账号来自 `.env.example`：\n\n```text\n用户名：admin\n密码：change-me\n```\n\n如果要从公网访问面板，推荐用 Cloudflare Tunnel + Zero Trust Access（需要域名），不需要开放服务器入站端口，也不用把 `WEB_PANEL_HOST` 改成 `0.0.0.0`。\n\n基本步骤：\n\n1. 在 Cloudflare Zero Trust 后台进入 `Networks` -> `Tunnels`，创建一个 Cloudflared Tunnel。\n2. 按页面提示在服务器安装并启动 `cloudflared`。\n3. 添加 Public Hostname，例如 `tg.example.com`。\n4. Service 填：\n\n```text\nhttp:\u002F\u002F127.0.0.1:8765\n```\n\n5. 在 Zero Trust 的 `Access` 里给这个域名加登录策略，例如只允许自己的邮箱访问。\n\n临时调试也可以用 SSH 端口转发：\n\n```bash\nssh -L 8765:127.0.0.1:8765 user@服务器IP\n```\n\n然后在自己电脑打开 `http:\u002F\u002F127.0.0.1:8765`。\n\n在面板“设置”里填好 Bot Token、管理员 ID、面板账号和密码后，停止前台进程，再安装 systemd 服务：\n\n```bash\nsudo chown -R tg-watchbot:tg-watchbot \u002Fopt\u002Ftg-watchbot\nsudo chmod 600 \u002Fopt\u002Ftg-watchbot\u002F.env\nsudo cp systemd\u002Ftg-watchbot.service \u002Fetc\u002Fsystemd\u002Fsystem\u002Ftg-watchbot.service\nsudo systemctl daemon-reload\nsudo systemctl enable --now tg-watchbot\nsudo journalctl -u tg-watchbot -f\n```\n\n健康检查：\n\n```bash\ncurl http:\u002F\u002F127.0.0.1:8765\u002Fhealth\n```\n\n说明：`\u002Frestart` 命令在 systemd 下会让进程退出，由 `Restart=on-failure` 自动拉起；如果是手动 `python app.py` 启动，退出后需要自己重新执行启动命令。\n\n## 配置说明\n\n### `.env`\n\n| 变量 | 说明 |\n|---|---|\n| `TELEGRAM_BOT_TOKEN` | BotFather 创建的 Telegram Bot Token |\n| `ADMIN_CHAT_ID` | 管理员 Telegram 数字 chat id；最多 3 个，用逗号分隔 |\n| `LOG_LEVEL` | 日志级别，默认 `INFO` |\n| `WEB_PANEL_ENABLED` | 是否启用 Web 面板，默认 `true` |\n| `WEB_PANEL_HOST` | 面板监听地址，默认 `127.0.0.1` |\n| `WEB_PANEL_PORT` | 面板端口，默认 `8765` |\n| `WEB_PANEL_USER` | 面板用户名 |\n| `WEB_PANEL_PASSWORD` | 面板密码 |\n| `WEB_PANEL_SESSION_SECRET` | Session Secret，留空会自动生成并写回 `.env` |\n| `TG_API_ID` | （可选）Telegram API ID，用于“TG 群监听=用户会话” |\n| `TG_API_HASH` | （可选）Telegram API Hash，用于“TG 群监听=用户会话” |\n| `TG_API_SESSION` | （可选）Telethon StringSession，用于“TG 群监听=用户会话” |\n\n### `config.yaml`\n\nBot 扩展配置示例：\n\n```yaml\nbot:\n  rate_limit:\n    window_seconds: 10\n    max_messages: 3\n  spam_filter:\n    enabled: true\n    auto_block: true\n    keywords:\n      - 投资\n      - 博彩\n      - 空投\n  quick_replies:\n    - title: 已收到\n      text: 你好，消息已收到，我稍后处理。\n```\n\nTG 群关键词监听（可选，默认关闭）：\n\n```yaml\ngroup_monitors:\n  - name: TG 群关键词监听\n    enabled: false\n    listen_source: bot\n    chat_id: -1001234567890\n    keywords:\n      - VPS\n      - 优惠\n    exclude_keywords:\n      - 求带\n    notify_telegram: true\n    summary_mode: template\n    ai_base_url: \"\"\n    ai_api_key: \"\"\n    ai_model: gpt-4o-mini\n    ai_interface: responses\n    ai_temperature: 0.2\n    ai_timeout_seconds: 30\n    ai_prompt: \"\"\n    ai_min_interval_seconds: 30\n    ai_dedupe_window_seconds: 300\n```\n\n- 命中 `keywords` 且未命中 `exclude_keywords` 时，会给管理员发送摘要。\n- TG 群监听页面会展示“已发现群聊”（Bot 收到过消息的群），可直接点“用此群创建监听”自动填入 `chat_id`。\n- `listen_source` 支持：\n  - `bot`：默认，使用 Bot 接收群消息（需把 Bot 拉进群）\n  - `user_session`：使用用户会话接收群消息（适合 Bot 无法入群）\n- `summary_mode` 支持：\n  - `template`：固定模板摘要（默认）\n  - `ai`：调用 AI 生成摘要（在 TG 群监听页面可视化配置）\n- `ai_prompt` 可填自定义总结提示词；留空使用内置默认提示词。\n- `ai_interface` 支持：\n  - `responses`：`\u002Fv1\u002Fresponses`\n  - `chat`：`\u002Fv1\u002Fchat\u002Fcompletions`\n- `ai_min_interval_seconds`：同一个群监听最小推送间隔（防刷屏）\n- `ai_dedupe_window_seconds`：相同内容摘要去重窗口（防重复）\n- 机器人想收到群里普通消息，需要在 `@BotFather` 执行 `\u002Fsetprivacy` 关闭隐私模式。\n- 若使用 `listen_source=user_session`，需在设置页填写 `TG_API_ID`、`TG_API_HASH`、`TG_API_SESSION` 后重启。\n\n更新代码（`\u002Fupdate`）已支持安全检查：\n- 显示本地\u002F远端 commit、ahead\u002Fbehind、工作区是否干净\n- 只允许 `ff-only` 更新，工作区有未提交改动会拒绝更新\n- 自动记录上次更新前的回滚点，并支持一键回滚\n\n监控数据自动清理示例：\n\n```yaml\ncleanup:\n  enabled: true\n  interval_minutes: 60              # 每多少分钟执行一次清理\n  monitor_message_delete_after_minutes: 60  # 监控通知消息发送后多久删除；0 表示不删除\n  monitor_retention_minutes: 1440   # RSS\u002F网站监控状态保留多久\n```\n\n清理范围只包括：\n\n- `monitor_state`：网站\u002FRSS 条目状态、价格\u002F库存状态；\n- `sent_events`：监控推送去重记录；\n- `monitor_messages`：等待到期删除的 Telegram 监控通知消息队列。\n\n不会删除：\n\n- `users`；\n- `message_map`；\n- `inbox_messages`；\n- 任何双向对话\u002F客服消息记录。\n\nRSS 示例：\n\n```yaml\nmonitors:\n  - name: NodeSeek 新帖\n    type: rss\n    url: https:\u002F\u002Frss.nodeseek.com\u002F\n    interval_seconds: 60\n    keywords:\n      - VPS\n      - 优惠\n    exclude_keywords:\n      - 出号\n    authors: []\n    categories: []\n    notify_on:\n      keyword_match: true\n      new_item: true\n      price_change: false\n      stock_change: false\n    notify_telegram: true\n    forum: true\n```\n\n网页示例：\n\n```yaml\nmonitors:\n  - name: Example Deals\n    type: web\n    url: https:\u002F\u002Fexample.com\u002Fdeals\n    interval_seconds: 300\n    keywords:\n      - discount\n    selectors:\n      item: article, .deal, li\n      title: h1, h2, h3, a\n      link: a\n      price: .price\n      stock: .stock\n    notify_on:\n      keyword_match: true\n      new_item: true\n      price_change: true\n      stock_change: true\n    notify_telegram: true\n```\n\n## 管理命令\n\n管理员在 Telegram 里可用：\n\n```text\n\u002Freply \u003Cuser_id> \u003C内容>\n\u002Fsendpic \u003Cuser_id> [图片说明]\n\u002Fblock \u003Cuser_id>\n\u002Funblock \u003Cuser_id>\n\u002Fnote \u003Cuser_id> \u003C备注>\n\u002Fwho \u003Cuser_id>\n\u002Fspamwords\n\u002Fspamadd \u003C关键词>\n\u002Fspamdel \u003C关键词>\n\u002Fcancel\n```\n\n也可以直接“回复 Bot 转发给管理员的用户消息”，Bot 会按映射把回复发回原用户。\n\n## 面板路由\n\n| 路由 | 说明 |\n|---|---|\n| `\u002F` | 监控列表 |\n| `\u002Fmonitor\u002Fnew` | 新增监控 |\n| `\u002Fmonitor\u002Ftemplates` | 论坛模板 |\n| `\u002Fmonitor\u002Fbulk` | 批量新增 |\n| `\u002Fmonitor\u002F{idx}\u002Fpreview` | 预览抓取结果，不写入状态、不推送 |\n| `\u002Fmonitor\u002F{idx}\u002Frun` | 手动检查单个监控 |\n| `\u002Frun-once` | 手动检查全部监控 |\n| `\u002Fyaml` | YAML 高级编辑 |\n| `\u002Fsettings` | `.env` 设置和监控清理策略 |\n| `\u002Fsend` | 主动发消息给已私聊过 Bot 的用户 |\n| `\u002Finbox` | 收件箱 |\n| `\u002Fusers` | 用户管理 |\n| `\u002Frules` | 私聊广告拦截规则 |\n| `\u002Freplies` | 快捷回复模板 |\n| `\u002Fmonitor\u002Fevents` | 监控推送历史 |\n| `\u002Fchannel-media` | 频道媒体监控 |\n| `\u002Fchannel-media\u002F{id}\u002Fpause` | 暂停频道监控 |\n| `\u002Fchannel-media\u002F{id}\u002Fresume` | 恢复频道监控 |\n| `\u002Fchannel-media\u002F{id}\u002Fcheck` | 手动下载频道媒体 |\n| `\u002Fchannel-media\u002F{id}\u002Fdownload` | 查看下载记录 |\n| `\u002Fconfig\u002Fexport` | 导出 \u002F 导入 `config.yaml` |\n| `\u002Flogs` | 日志 |\n| `\u002Fhealth` | 健康检查 |\n\n## 注意事项\n\n- Telegram Bot 不能主动私聊陌生人；对方必须先给 Bot 发过 `\u002Fstart` 或任意消息。\n- 对公网暴露 Web 面板前，务必改默认密码。\n- RSS 监控建议 60 秒起步；网页监控建议更保守，避免对目标站造成压力。\n- 媒体消息当前只保证记录文本\u002F说明和转发状态；转发失败后的媒体补发需要额外做本地附件存储。\n\n## License\n\n本项目采用非商业授权。\n\n你可以：\n- 学习、研究、个人使用本项目\n- 修改代码用于非商业用途\n- 在非商业项目中使用本项目\n\n你必须：\n- 保留原作者署名\n- 在引用或二次发布时注明项目来源：\n  https:\u002F\u002Fgithub.com\u002FGongyiChuren\u002Ftg-watchbot\n\n你不可以：\n- 将本项目或其修改版本用于商业用途\n- 售卖本项目或基于本项目提供付费服务\n- 在未获得作者书面许可的情况下用于商业产品\n\n商业使用请先联系作者获得授权。\n","tg-watchbot 是一个集成了 Telegram 双向客服机器人、Web\u002FRSS 监控推送和频道媒体下载功能的 Python 服务。其核心功能包括双向对话管理，允许普通用户与管理员之间通过 Bot 进行私聊，并支持管理员直接回复或发送多媒体内容；后台定时监控网页或 RSS 源，发现关键词匹配或新条目时自动通知管理员；以及使用 Telethon 自动下载指定频道中的媒体文件。此外，它还提供了一个可视化面板用于配置监控目标、编辑 YAML 文件、查看收件箱及日志等。此项目特别适用于需要轻量级自动化工具来增强通信效率和个人信息收集能力的小团队或个人开发者，在个人服务器、NAT 小鸡或轻量 VPS 上部署尤为方便。","2026-06-11 03:59:04","CREATED_QUERY"]