{"id":35797889,"url":"https://github.com/sxp-simon/astrbot_plugin_qq_group_daily_analysis","last_synced_at":"2026-04-01T18:30:32.217Z","repository":{"id":311440880,"uuid":"1043700278","full_name":"SXP-Simon/astrbot_plugin_qq_group_daily_analysis","owner":"SXP-Simon","description":"[多平台接入开发中] 群日常分析总结插件 - 生成精美的群聊分析报告，支持话题分析、用户形象、群聊圣经等功能；支持 QQ (OneBot)、Telegram、Discord","archived":false,"fork":false,"pushed_at":"2026-02-26T03:55:31.000Z","size":13518,"stargazers_count":183,"open_issues_count":3,"forks_count":24,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-26T11:47:15.437Z","etag":null,"topics":["analyze","astrbot-plugin","discord","llm","qq","summary","telegram"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SXP-Simon.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-24T12:42:01.000Z","updated_at":"2026-02-26T08:51:54.000Z","dependencies_parsed_at":"2025-08-24T18:40:59.921Z","dependency_job_id":"63292d25-8c42-4c94-b478-b2d5f45b9d6c","html_url":"https://github.com/SXP-Simon/astrbot_plugin_qq_group_daily_analysis","commit_stats":null,"previous_names":["sxp-simon/astrbot-qq-group-daily-analysis","sxp-simon/astrbot_plugin_qq_group_daily_analysis"],"tags_count":46,"template":false,"template_full_name":"Soulter/helloworld","purl":"pkg:github/SXP-Simon/astrbot_plugin_qq_group_daily_analysis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SXP-Simon%2Fastrbot_plugin_qq_group_daily_analysis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SXP-Simon%2Fastrbot_plugin_qq_group_daily_analysis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SXP-Simon%2Fastrbot_plugin_qq_group_daily_analysis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SXP-Simon%2Fastrbot_plugin_qq_group_daily_analysis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SXP-Simon","download_url":"https://codeload.github.com/SXP-Simon/astrbot_plugin_qq_group_daily_analysis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SXP-Simon%2Fastrbot_plugin_qq_group_daily_analysis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30106156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T01:39:18.192Z","status":"online","status_checked_at":"2026-03-05T02:00:06.710Z","response_time":93,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analyze","astrbot-plugin","discord","llm","qq","summary","telegram"],"created_at":"2026-01-07T10:17:44.136Z","updated_at":"2026-04-01T18:30:32.206Z","avatar_url":"https://github.com/SXP-Simon.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 群聊日常分析插件\n\n[![Plugin Version](https://img.shields.io/badge/Latest_Version-v4.9.11-blue.svg?style=for-the-badge\u0026color=76bad9)](https://github.com/SXP-Simon/astrbot-qq-group-daily-analysis)\n[![AstrBot](https://img.shields.io/badge/AstrBot-Plugin-ff69b4?style=for-the-badge)](https://github.com/AstrBotDevs/AstrBot)\n[![License](https://img.shields.io/badge/License-MIT-green.svg?style=for-the-badge)](LICENSE)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/SXP-Simon/astrbot_plugin_qq_group_daily_analysis) \n\n\u003ctable align=\"center\" style=\"border: none;\"\u003e\n  \u003ctr\u003e\n    \u003ctd style=\"border: none;\" align=\"center\"\u003e\n      \u003ca href=\"https://qm.qq.com/q/oTzIrdDBIc\"\u003e\u003cimg src=\"https://fastly.jsdelivr.net/gh/SXP-Simon/astrbot_plugin_qq_group_daily_analysis@main/assets/QQ.png\" width=\"300\" alt=\"QQ Group\"\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd style=\"border: none;\" align=\"center\"\u003e\n      \u003ca href=\"https://t.me/AstrBotPluginGroupDailyAnalysis\"\u003e\u003cimg src=\"https://fastly.jsdelivr.net/gh/SXP-Simon/astrbot_plugin_qq_group_daily_analysis@main/assets/TG.png\" width=\"300\" alt=\"Telegram Group\"\u003e\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd style=\"border: none;\" align=\"center\"\u003e\u003cb\u003eQQ群\u003c/b\u003e\u003c/td\u003e\n    \u003ctd style=\"border: none;\" align=\"center\"\u003e\u003cb\u003eTelegram群\u003c/b\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\n_✨ 一个基于 AstrBot 的智能群聊分析插件，支持 **QQ (OneBot)**、**Telegram**、**Discord**，未来支持更多平台。 [灵感来源](https://github.com/LSTM-Kirigaya/openmcp-tutorial/tree/main/qq-group-summary)。 ✨_\n\n\u003cimg src=\"https://count.getloli.com/@astrbot-qq-group-daily-analysis?name=astrbot-qq-group-daily-analysis\u0026theme=booru-jaypee\u0026padding=6\u0026offset=0\u0026align=top\u0026scale=1\u0026pixelated=1\u0026darkmode=auto\" alt=\"count\" /\u003e\n\u003c/div\u003e\n\n\n\n## 效果\n\n\u003ctable align=\"center\" width=\"100%\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"33.3%\" valign=\"top\"\u003e\n      \u003cp\u003e\u003cb\u003eScrapbook (默认)\u003c/b\u003e\u003c/p\u003e\n      \u003cimg src=\"https://fastly.jsdelivr.net/gh/SXP-Simon/astrbot_plugin_qq_group_daily_analysis@main/assets/scrapbook-demo.jpg\" alt=\"scrapbook\" width=\"100%\"\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"33.3%\" valign=\"top\"\u003e\n      \u003cp\u003e\u003cb\u003eRetro Futurism\u003c/b\u003e\u003c/p\u003e\n      \u003cimg src=\"https://fastly.jsdelivr.net/gh/SXP-Simon/astrbot_plugin_qq_group_daily_analysis@main/assets/retro_futurism-demo.jpg\" alt=\"retro_futurism\" width=\"100%\"\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"33.3%\" valign=\"top\"\u003e\n      \u003cp\u003e\u003cb\u003eHatsuneMiku\u003c/b\u003e\u003c/p\u003e\n      \u003cimg src=\"https://fastly.jsdelivr.net/gh/SXP-Simon/astrbot_plugin_qq_group_daily_analysis@main/assets/HatsuneMiku-demo.jpg\" alt=\"HatsuneMiku\" width=\"100%\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"33.3%\" valign=\"top\"\u003e\n      \u003cp\u003e\u003cb\u003eHack\u003c/b\u003e\u003c/p\u003e\n      \u003cimg src=\"https://fastly.jsdelivr.net/gh/SXP-Simon/astrbot_plugin_qq_group_daily_analysis@main/assets/hack-demo.jpg\" alt=\"hack\" width=\"100%\"\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"33.3%\" valign=\"top\"\u003e\n      \u003cp\u003e\u003cb\u003eFormat\u003c/b\u003e\u003c/p\u003e\n      \u003cimg src=\"https://fastly.jsdelivr.net/gh/SXP-Simon/astrbot_plugin_qq_group_daily_analysis@main/assets/format-demo.jpg\" alt=\"format\" width=\"100%\"\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"33.3%\" valign=\"top\"\u003e\n      \u003cp\u003e\u003cb\u003eSimple\u003c/b\u003e\u003c/p\u003e\n      \u003cimg src=\"https://fastly.jsdelivr.net/gh/SXP-Simon/astrbot_plugin_qq_group_daily_analysis@main/assets/simple-demo.jpg\" alt=\"simple\" width=\"100%\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\n\n\n## 功能特色\n\n### 🎯 智能分析\n- **统计数据**: 全面的群聊活跃度和参与度统计\n- **话题分析**: 使用LLM智能提取群聊中的热门话题和讨论要点\n- **用户画像**: 基于聊天行为分析用户特征，分配个性化称号\n- **圣经识别**: 自动筛选出群聊中的精彩发言\n\n### 📊 可视化报告\n- **多种格式**: 支持图片和文本输出格式\n    - **精美图片**: 生成美观的可视化报告\n    - **PDF报告**: 生成专业的PDF格式分析报告（需配置）\n    - **QQ群**: 支持上传到群相册和群文件，查阅黑历史友好\n- **详细数据**: 包含消息统计、时间分布、关键词、金句等\n\n\u003e [!warning]\n\u003e **实验性开发中**：\n\u003e - 多平台支持功能尚在开发中，当前仅支持QQ OneBot, Discord, Telegram。\n\u003e - 旧版本稳定版在[QQ 分支](https://github.com/SXP-Simon/astrbot_plugin_qq_group_daily_analysis/tree/QQ)，仅 QQ 平台支持\n\n\n\u003e [!CAUTION]\n\u003e **Discord 用户重点注意**：\n\u003e 如果机器人无法获取群列表或分析报 `403 Forbidden`，请检查 Discord 开发者面板中：\n\u003e 1. **Privileged Gateway Intents**: 开启 `Message Content Intent`。\n\u003e 2. **频道权限**: 确保机器人所在的频道，对应的角色拥有 **“查看消息历史记录”** 权限。\n\n\u003e [!IMPORTANT]\n\u003e **Telegram 用户重点注意**：\n\u003e 1. 如果 TG Bot 不是群管理员，务必在拉入群前先关闭 BotFather 隐私模式。\n\u003e 2. 如果 Bot 已经在群里且不是管理员，关闭隐私模式后必须先移除再重新拉入群，否则新设置不会生效。\n\u003e\n\u003e 注：群聊隐私模式关闭流程：`@BotFather`→左下角Open→选择要调整的bot→Bot Settings→将`Group Privacy`关闭\n\n\n\u003e [!TIP]\n\u003e 如果生成图片失败，日志显示 `Endpoint https://t2i.soulter.top/text2img failed`、`Endpoint https://t2i.rcfortress.site/text2img failed` 这种情况并回退到文本总结，可考虑自部署 T2I 服务。\n\u003e\n\u003e \u003cdetails\u003e\n\u003e \u003csummary\u003e\u003cb\u003e若不便自部署，可尝试使用以下 T2I 服务（点击展开）：\u003c/b\u003e\u003c/summary\u003e\n\u003e\n\u003e - **Hugging Face 服务**: `https://huggingface.co/spaces/clown145/astrbot-t2i-service`\n\u003e - **API 接口地址**: `https://clown145-astrbot-t2i-service.hf.space`\n\u003e   - **说明**: \n\u003e     1. **复制空间**：可访问上方空间地址并点击 **Duplicate Space** 复制到自己的账号下使用。\n\u003e     2. **配置填写**：在 **AstrBot 系统配置** 中填入相应的 API 地址（格式通常为 `https://用户名-空间名.hf.space`）。\n\u003e     3. **稳定性**：在一段时间内大概率稳定，但不保证长期有效。\n\u003e     4. **休眠保活**：由于免费空间若长时间（约 48 小时）无人访问会进入休眠。可选择使用保活服务（如 [UptimeRobot](https://uptimerobot.com/)）定期访问 API 地址以保持其处于唤醒状态。\n\u003e\n\u003e - **国内加速 (CF 代理)**: `http://t2i.ciallo.de5.net`\n\u003e   - **说明**: 在国内直接访问原始域名下载图片可能较慢，可选择使用此代理域名。在一段时间内大概率稳定。\n\u003e \u003c/details\u003e\n\u003e\n\u003e **自部署 T2I 文档**：docs.astrbot.app/others/self-host-t2i.html\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e Feishu / Lark 集成说明\n\u003e\n\u003e 本插件通过 `LarkAdapter` 复用 AstrBot 已有的 `lark_oapi` 生态能力，在获得授权后即可对 Feishu 群聊执行完整的消息采集与分析。\n\u003e\n\u003e - **一次性授权**：在飞书开放平台中为你的应用补齐如下权限（仅需在初次部署时授予）：\n\u003e   - `im:message:readonly`、`im:chat:readonly`（读取群消息/群信息）\n\u003e   - `contact:contact.base:readonly`（拉取用户昵称/头像；缺少该权限会导致头像永远显示默认）\n\u003e   - 发送需要的附加 scope（如 `im:message:send` / `im:message:receive_v1` / 上传相关的 `im:resource` 系列）\n\u003e   - **用户头像保障**：插件在分析前会调用 `LarkAdapter.prepare_group_member_cache`，一次性批量拉取最多 100 名活跃成员的头像并在缓存中保留，让后续分析阶段不再遇到“未授权头像”。\n\u003e   - **令牌与长时运行**：飞书的 `tenant_access_token` 有 2 小时有效期，分析任务运行时间若超过此周期，请确保你的 Bot 框架会自动刷新令牌（通常是 SDK 默认行为）。\n\u003e 读取 Feishu 配置后，按照上述授权顺序重新安装/刷新应用，就能在报告里面看到与 QQ/Telegram 一样的用户筛选、头像与 LLM 输出。\n\n\n\n### 🛠️ 灵活配置\n- **多平台支持**: 自动识别并适配 OneBot, Discord, Telegram 等平台\n- **群组管理**: 支持指定特定群组启用功能（支持跨平台黑白名单）\n- **参数调节**: 可自定义分析天数、消息数量等参数\n- **定时任务**: 支持设置每日自动分析时间\n- **增量分析**: 全新的滑动窗口分析模式，全天候覆盖群聊消息\n- **自定义LLM服务**: 支持自定义指定的LLM服务\n\n\n\n## 配置选项\n\n\u003e [!NOTE]\n\u003e 以下配置情况仅供参考，请仔细阅读插件配置页面中各个字段的说明，以插件配置中的说明为准。\n\n| 配置项 | 说明 | 备注 |\n|--------|------|--------|\n| 定时分析名单模式 + 列表 | 控制哪些群参与定时任务（报告时间点触发）。 | `whitelist + 空列表` 表示不注册定时任务 |\n| 增量分析名单模式 + 列表 | 控制哪些群走增量模式，其他群走传统全量。 | `whitelist + 空列表` 表示不启用增量周期任务 |\n| PDF 格式的报告 | 初次使用需要使用 `/安装PDF` 命令安装依赖。需重启 AstrBot 生效。 | 输出格式需设为 PDF |\n| HTML 格式 (自建) | 配置 `html_base_url` 后，机器人会发送可直接点击的报告外链。 | 输出格式需设为 html |\n| 自定义 LLM 服务 | 用户可自行选取个人提供的服务商。 | 留空则回退到默认服务商 |\n\n### 分析黑白名单配置说明（小白能懂）\n\n下面只讲“在面板里怎么点”。\n\n#### 自动分析的判定顺序（很重要）\n\n系统会按下面顺序判断，前一关没过就直接停止：\n\n1. 基础群权限（`basic`）\n2. 定时分析名单（`auto_analysis`）\n3. 增量名单（`incremental`，只决定模式，不决定放行）\n\n一句话版：  \n`basic` 决定“能不能参与自动分析” -\u003e `auto_analysis` 决定“会不会自动触发” -\u003e `incremental` 决定“触发后用哪种分析方式”。\n\n#### 场景 A：只让一个群自动出报告（最常用）\n\n1. 在插件配置面板找到 `定时分析设置`。\n2. 把 `定时分析名单模式` 设为 `whitelist`。\n3. 在 `定时分析群列表` 里添加你的目标群（建议粘贴 `/sid` 拿到的完整会话ID）。\n4. 在 `自动分析时间列表` 里填时间（例如 `09:00`、`21:30`）。\n5. 去 `增量分析设置`：\n6. 把 `增量分析名单模式` 设为 `whitelist`，并保持 `增量分析群列表` 为空。  \n这样就是“这个群会自动跑，但走普通分析，不走增量”。\n\n#### 场景 B：除了某个群，其他群都自动跑\n\n1. 在 `定时分析设置` 里把 `定时分析名单模式` 设为 `blacklist`。\n2. 在 `定时分析群列表` 里填“不要自动跑”的那个群。\n3. 在 `自动分析时间列表` 里填每天自动运行时间。\n4. 如果你希望其他群默认走增量：\n5. 在 `增量分析设置` 把 `增量分析名单模式` 设为 `blacklist`，并把 `增量分析群列表` 留空。\n\n#### 场景 C：Telegram 用户怎么填最稳\n\n1. 在面板里需要填群的地方，尽量填完整会话ID（例如 `telegram2:GroupMessage:-1001234567890`）。\n2. 不建议新手只填纯群号，容易填错平台。\n3. 先在群里执行 `/sid`，复制结果粘贴到列表里就行。\n\n#### 最容易踩坑的 3 点\n\n- `定时分析名单模式` 选 `whitelist` 时，如果 `定时分析群列表` 为空，任务不会自动跑。\n- `增量分析名单模式` 选 `whitelist` 时，如果 `增量分析群列表` 为空，增量不会生效，会走普通分析。\n- `增量失败自动回退全量分析` 建议保持开启，这样增量异常时也能尽量产出报告。\n\n#### 你可能会问（关键边界）\n\n- 不在“定时白名单”里，但在“增量白名单”里，会触发吗？  \n不会。因为会先被“定时白名单”拦住，进不到增量判断。\n\n- 不在“基础群权限”里，但你开了定时分析，会触发吗？  \n不会。基础群权限是第一关，不通过就不会进入后续流程。\n\n\u003e [!IMPORTANT]\n\u003e **多平台配置注意**：\n\u003e - **自动发现**: 插件会自动发现已登录的 Bot 实例。\n\n\u003e [!TIP]\n\u003e **自定义 LLM 服务回退机制**：性能优先，策略如下：\n\u003e    1. 尝试从配置获取指定的 provider_id\n\u003e    2. 回退到主 LLM provider_id\n\u003e    3. 回退到当前会话的 Provider (UMO)\n\u003e    4. 回退到第一个可用的 Provider\n\n\n## 使用方法\n\n### 基础命令\n\n#### 群分析\n```\n/群分析 [天数]\n```\n- 分析群聊近期活动\n- 天数可选，默认为1天\n- 例如：`/群分析 3` 分析最近3天的群聊\n\n#### 增量状态\n```\n/增量状态\n```\n- 查看当前增量分析的实时状态\n- 显示当前滑动窗口内的分析次数、消息数、话题数等统计\n- **仅在启用增量分析模式时可用**\n\n#### 分析设置\n```\n/分析设置 [操作]\n```\n- `enable`: 为当前群启用分析功能\n- `disable`: 为当前群禁用分析功能  \n- `status`: 查看当前群的启用状态\n- 例如：`/分析设置 enable`\n\n#### 模板设置\n```\n/查看模板\n/设置模板 [模板名称或序号]\n```\n- `/查看模板`: 查看所有可用模板及预览图\n- `/设置模板`: 查看当前模板和可用模板列表\n- `/设置模板 [序号]`: 切换到指定序号的模板\n- 例如：`/设置模板 1` 或 `/设置模板 scrapbook`\n\n## 平台支持与要求\n\n| 平台 | 适配器类型 | 特殊要求/说明 |\n|------|-----------|--------------|\n| **QQ** | OneBot v11 | 建议使用 NapCat/Lagrange。需注意消息分页拉取限制。 |\n| **Discord** | Discord | **必须** 拥有 `Read Message History` (查看消息历史记录) 权限。 |\n| **Telegram** | Telegram Bot API | 若机器人不是群管理员，入群前需先在 BotFather 关闭隐私模式 (`/setprivacy` -\u003e `Disable`)。若机器人已在群内且非管理员，关闭后需要先移出机器人再重新拉入，设置才会生效。 |\n\n\n\n## 注意事项\n\n\u003e [!WARNING]\n\u003e 1. **性能考虑**: 大量消息分析可能消耗较多 LLM tokens\n\u003e 2. **数据准确性**: 分析结果基于可获取的群聊记录，可能不完全准确\n\n## 增量分析模式 (Beta)\n\n增量分析模式是为了解决消息量大的群聊（如日均消息 \u003e 500 条）在单次分析时容易丢失上下文的问题。\n\n**核心特性：**\n- **滑动窗口**：不再受限于自然日，分析窗口随时间滑动（如过去 24 小时），确保任何时候生成的报告都覆盖完整的时间段。\n- **分批处理**：定时（如每 2 小时）执行一次小批量分析，减轻 LLM 瞬时压力。\n- **自动去重**：智能识别重复话题和金句，合并生成最终报告。\n\n**启用方法：**\n- 通过 `incremental_group_list_mode + incremental_group_list` 指定哪些群走增量模式，并根据需要调整分析间隔 (`incremental_interval_minutes`) 和消息阈值。\n\n## HTML 报告与自建外链\n\n如果你希望在群里发送的不是图片，而是一个可以点击跳转的精美网页链接，可以使用 HTML 格式输出。\n\n### 1. 配置流程\n1. **设置输出格式**：在 `basic` 设置中将 `output_format` 改为 `html`。\n2. **指定储存目录 (`html_output_dir`)**：设置 HTML 文件在服务器上的保存路径。留空则默认保存在插件数据目录。\n3. **配置外链基址 (`html_base_url`)**：这是关键。如果你使用 Nginx/Apache 等 Web 服务器将上述目录映射到了公网，请在这里填写访问的前缀（如 `https://report.example.com`）。\n\n### 2. 工作原理\n- 机器人生成 HTML 报告并保存到本地目录。\n- 机器人根据文件名和 `html_base_url` 拼接成完整链接发送到群里。\n- **注意**：本插件**不提供** Web 服务器功能，你需要自行使用 Nginx 或 AstrBot 所在的服务器环境来实现静态文件的公网访问。\n\n## 常见问题 (FAQ)\n\n### 获取不到带记录的引用消息\n\n**现象**：\n后台日志出现 `[warn] ... 似乎是旧版客户端 ... [error] ... 获取不到带记录的引用消息`。\n\n**原因**：\n这是由于 NapCat/NTQQ 消息 ID 格式变动、消息过期或临时会话限制导致的。机器人尝试降级使用旧版序号查找失败。\n\n**忽略**：如果只是偶尔出现（如回复久远消息），不影响机器人核心功能（收发消息），可以直接忽略。\n\n\n## 贡献\n\n\n\n\n### 开发环境设置\n\n为了保持代码质量，本项目使用 [pre-commit](https://pre-commit.com/) 钩子进行代码规范检查和自动修复。所有的贡献代码都必须通过 pre-commit 检查。\n\n#### 1. 安装 pre-commit\n```bash\npip install pre-commit\n```\n\n#### 2. 安装 git hook\n在项目根目录下运行，这将确保在每次提交时自动运行检查：\n```bash\npre-commit install\n```\n\n#### 3. 手动运行检查\n如果需要手动触发所有文件的检查（推荐在提交前运行一次）：\n```bash\npre-commit run --all-files\n```\n\n### 模板贡献指南\n\n\u003cdetails\u003e\n\u003csummary\u003e🎨 点击展开查看如何贡献你的自定义模板给更多人玩\u003c/summary\u003e\n\n如果您想为插件贡献新的报告模板，请按照以下步骤操作：\n\n#### 1. 创建模板目录\n在 `src/infrastructure/reporting/templates/` 目录下创建一个新的文件夹，例如 `my_theme`。\n\n#### 2. 必需文件结构\n您的模板目录需要包含以下文件：\n\n```text\nsrc/infrastructure/reporting/templates/your_theme_name/\n├── image_template.html      # 图片报告主模板\n├── pdf_template.html        # PDF报告主模板\n├── activity_chart.html      # 活跃度图表组件\n├── topic_item.html          # 话题列表项组件\n├── user_title_item.html     # 用户称号项组件\n└── quote_item.html          # 金句项组件\n```\n\n#### 3. 模板变量说明\n\n**主模板 (`image_template.html` / `pdf_template.html`) 可用变量:**\n- `current_date`: 当前日期 (YYYY年MM月DD日)\n- `current_datetime`: 当前时间 (YYYY-MM-DD HH:MM:SS)\n- `message_count`: 消息总数\n- `participant_count`: 参与人数\n- `total_characters`: 总字符数\n- `emoji_count`: 表情数量\n- `most_active_period`: 最活跃时段\n- `hourly_chart_html`: 渲染后的活跃度图表 HTML\n- `topics_html`: 渲染后的热门话题 HTML\n- `titles_html`: 渲染后的用户称号 HTML\n- `quotes_html`: 渲染后的金句 HTML\n- `total_tokens`: Token 消耗统计\n- `prompt_tokens`: 提示词 Token 消耗\n- `completion_tokens`: 生成内容 Token 消耗\n\n**组件模板可用变量:**\n- `activity_chart.html`: `chart_data` (包含 `hour`, `count`, `percentage` 的列表)\n- `topic_item.html`: `topics` (列表，每一项包含 `index`, `topic` 对象, `contributors`, `detail`)\n- `user_title_item.html`: `titles` (列表，包含 `name`, `title`, `mbti`, `reason`, `avatar_data` (Base64))\n- `quote_item.html`: `quotes` (列表，包含 `content`, `sender`, `reason`, `avatar_url` (Base64))\n\n#### 4. 参考示例\n您可以参考 `src/infrastructure/reporting/templates/simple/` 目录下的文件，这是一个最简化的模板实现，包含了所有必需的基本结构。\n\n#### 5. 模板调试工具\n\nPDF 调试模板命令：\n\n```bash\n# 生成所有主题的 PDF (推荐)\nuv run --with playwright --with diskcache scripts\\debug_all_pdf_themes.py\n\n# 生成指定主题的 PDF (例如：HatsuneMiku ，可以修改内部代码占位解决)\nuv run --with playwright --with diskcache scripts\\mock_pdf_gen.py\n```\n\nImage 模板调试：\n\n本项目提供了一个专门用于模板开发的调试工具 `scripts/debug_render.py`，可以在不启动完整 AstrBot 环境的情况下快速预览模板渲染效果。\n\n**使用方法：**\n\n```bash\n# 进入项目目录\ncd astrbot-qq-group-daily-analysis\n\n# 使用默认模板 (scrapbook) 渲染\npython scripts/debug_render.py\n\n# 指定模板名称渲染\npython scripts/debug_render.py -t simple\n\n# 指定输出文件路径\npython scripts/debug_render.py -t retro_futurism -o my_output.html\n\n# 查看帮助信息\npython scripts/debug_render.py -h\n```\n\n```\nuv run scripts\\debug_render.py -t scrapbook -o debug_scrapbook.html\nuv run scripts\\debug_render.py -t hack -o debug_hack.html\nuv run scripts\\debug_render.py -t retro_futurism -o debug_retro.html\nuv run scripts\\debug_render.py -t format -o debug_format.html\nuv run scripts\\debug_render.py -t simple -o debug_simple.html\nuv run scripts\\debug_render.py -t spring_festival -o debug_spring.html\nuv run scripts\\debug_render.py -t HatsuneMiku -o debug_miku.html\n```\n\n\n**工具特性：**\n\n- 使用 Mock 数据模拟真实的群聊分析结果\n- 无需配置 LLM 服务或启动 AstrBot\n- 输出可使用 live server 打开 HTML 文件，并进行修改查看\n- 支持所有内置模板的快速切换预览\n\n**开发工作流推荐：**\n\n1. 修改模板文件\n2. 运行调试工具生成预览\n3. 在浏览器中打开生成的 HTML 文件查看效果\n4. 重复上述步骤直到满意\n\n\u003c/details\u003e\n\n## ❤️ Special Thanks\n\n❤️ 特别感谢所有 Contributors 的贡献 ❤️\n\n\u003ca href=\"https://github.com/SXP-Simon/astrbot_plugin_qq_group_daily_analysis/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=SXP-Simon/astrbot_plugin_qq_group_daily_analysis\u0026max=200\u0026columns=14\" /\u003e\n\u003c/a\u003e\n\n## Star History\n\n\u003ca href=\"https://www.star-history.com/#SXP-Simon/astrbot_plugin_qq_group_daily_analysis\u0026type=date\u0026legend=top-left\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=SXP-Simon/astrbot_plugin_qq_group_daily_analysis\u0026type=date\u0026theme=dark\u0026legend=top-left\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=SXP-Simon/astrbot_plugin_qq_group_daily_analysis\u0026type=date\u0026legend=top-left\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=SXP-Simon/astrbot_plugin_qq_group_daily_analysis\u0026type=date\u0026legend=top-left\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n\n## 许可证\n\nMIT License\n\n\n欢迎提交Issue和Pull Request来改进这个插件！\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsxp-simon%2Fastrbot_plugin_qq_group_daily_analysis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsxp-simon%2Fastrbot_plugin_qq_group_daily_analysis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsxp-simon%2Fastrbot_plugin_qq_group_daily_analysis/lists"}