[v4.4.0] 修复可能的图片生成成功但是发送失败的情况,增加 Fallback 的 BASE64 编码的图片发送方式 @Heximiao

This commit is contained in:
SXP-Simon
2025-12-20 21:10:56 +08:00
parent c216ccb009
commit 4ca8180933
3 changed files with 21 additions and 19 deletions
+4 -1
View File
@@ -3,7 +3,7 @@
# QQ群日常分析插件
[![Plugin Version](https://img.shields.io/badge/Latest_Version-v4.3.0-blue.svg?style=for-the-badge&color=76bad9)](https://github.com/SXP-Simon/astrbot-qq-group-daily-analysis)
[![Plugin Version](https://img.shields.io/badge/Latest_Version-v4.4.0-blue.svg?style=for-the-badge&color=76bad9)](https://github.com/SXP-Simon/astrbot-qq-group-daily-analysis)
[![AstrBot](https://img.shields.io/badge/AstrBot-Plugin-ff69b4?style=for-the-badge)](https://github.com/AstrBotDevs/AstrBot)
[![License](https://img.shields.io/badge/License-MIT-green.svg?style=for-the-badge)](LICENSE)
[![](https://img.shields.io/badge/五彩斑斓的Bug群-Bug反馈群&水群-white?style=for-the-badge&color=76bad9&logo=qq&logoColor=76bad9)](https://qm.qq.com/q/oTzIrdDBIc)
@@ -108,6 +108,9 @@ simple 模板效果图(用于展示贡献指南)
<details>
<summary>📋 点击展开查看完整更新日志</summary>
### v4.4.0
- 修复可能的图片生成成功但是发送失败的情况,增加 Fallback 的 BASE64 编码的图片发送方式(@Heximiao
### v4.3.0
- 纠正关闭特定分析区但是基础样式没有去除的 bug
+1 -1
View File
@@ -14,6 +14,6 @@ help: | # 插件的帮助信息
命令:
/群分析 [天数] - 分析群聊活动
/分析设置 [操作] - 管理设置(enable/disable/status/test
version: v4.3.0 # 插件版本号。格式:v1.1.1 或者 v1.1
version: v4.4.0 # 插件版本号。格式:v1.1.1 或者 v1.1
author: SXP-Simon # 作者
repo: https://github.com/SXP-Simon/astrbot-qq-group-daily-analysis # 插件的仓库地址
+16 -17
View File
@@ -7,8 +7,6 @@ import asyncio
import weakref
from datetime import datetime, timedelta
import aiohttp
import tempfile
import os
import base64
@@ -489,8 +487,6 @@ class AutoScheduler:
f"analysis_result_keys={list(analysis_result.keys()) if isinstance(analysis_result, dict) else type(analysis_result)}"
)
"""发送分析报告到群"""
try:
output_format = self.config_manager.get_output_format()
@@ -503,15 +499,16 @@ class AutoScheduler:
image_url = await self.report_generator.generate_image_report(
analysis_result, group_id, self.html_render_func
)
logger.info(
f"[DEBUG][SEND_REPORT] image ready "
f"group_id={group_id}, "
f"image_url={image_url}"
)
logger.debug(
f"[DEBUG][SEND_REPORT] 图片生成成功"
f"group_id={group_id}, "
f"image_url={image_url}"
)
if image_url:
success = await self._send_image_message(group_id, image_url)
success = await self._send_image_message(
group_id, image_url
)
if success:
logger.info(f"{group_id} 图片报告发送成功")
else:
@@ -519,8 +516,10 @@ class AutoScheduler:
logger.warning(
f"{group_id} 发送图片报告失败,回退到文本报告"
)
text_report = self.report_generator.generate_text_report(
analysis_result
text_report = (
self.report_generator.generate_text_report(
analysis_result
)
)
await self._send_text_message(
group_id, f"📊 每日群聊分析报告:\n\n{text_report}"
@@ -658,9 +657,7 @@ class AutoScheduler:
return True
except Exception as e:
logger.debug(
f"平台 {test_platform_id} URL 图片发送失败: {e}"
)
logger.debug(f"平台 {test_platform_id} URL 图片发送失败: {e}")
logger.warning(f"{group_id} URL 方式发送图片失败,尝试 base64")
@@ -673,7 +670,9 @@ class AutoScheduler:
async with aiohttp.ClientSession(timeout=timeout) as session:
async with session.get(image_url) as resp:
if resp.status != 200:
logger.error(f"{group_id} base64 下载图片失败: status={resp.status}")
logger.error(
f"{group_id} base64 下载图片失败: status={resp.status}"
)
image_bytes = None
else:
max_bytes = 5 * 1024 * 1024 # 5 MiB 安全限制