fix(qqpush): 支持无@群图片推送

This commit is contained in:
2026-07-30 20:54:43 +08:00
parent 1118c0a6e1
commit f8e9544fd6
5 changed files with 109 additions and 36 deletions

View File

@@ -42,14 +42,14 @@ class MessageSender:
return None
async def _send_msg(self, group_id: int, qq: int, segment) -> dict:
async def _send_msg(self, group_id: int, segment, qq: Optional[int] = None) -> dict:
"""
内部通用发送方法(@用户 + 任意消息段)
内部通用发送方法(可选 @ 用户 + 任意消息段)
Args:
group_id: 群号
qq: 要 @ 的 QQ 号
segment: MessageSegment 实例
segment: MessageSegment 实例
qq: 可选的要 @ QQ 号;未传时仅发送消息段
Returns:
发送结果字典
@@ -59,9 +59,10 @@ class MessageSender:
raise ValueError("Bot 实例未设置,无法发送消息")
try:
message = Message()
message.append(MessageSegment.at(qq))
message.append(segment)
message = Message()
if qq is not None:
message.append(MessageSegment.at(qq))
message.append(segment)
result = await bot.call_api(
"send_group_msg",
@@ -73,16 +74,16 @@ class MessageSender:
return {"success": True, "data": result, "message": "消息发送成功"}
except Exception as e:
logger.warning(f"[QqPush] 消息发送失败 group={group_id} qq={qq}: {e}")
logger.warning(f"[QqPush] 消息发送失败 group={group_id} qq={qq}: {e}")
return {"success": False, "error": str(e), "message": f"消息发送失败: {e}"}
async def send_to_group(self, group_id: int, qq: int, image_base64: str) -> dict:
"""向指定群发送消息(@用户 + 图片)"""
return await self._send_msg(group_id, qq, MessageSegment.image(image_base64))
async def send_to_group(self, group_id: int, image_base64: str, qq: Optional[int] = None) -> dict:
"""向指定群发送图片,可选择 @ 成员。"""
return await self._send_msg(group_id, MessageSegment.image(image_base64), qq)
async def send_text_to_group(self, group_id: int, qq: int, text: str) -> dict:
"""向指定群发送纯文本消息@用户 + 文本)"""
return await self._send_msg(group_id, qq, MessageSegment.text(text))
async def send_text_to_group(self, group_id: int, text: str, qq: Optional[int] = None) -> dict:
"""向指定群发送纯文本消息,可选择 @ 成员。"""
return await self._send_msg(group_id, MessageSegment.text(text), qq)
# 全局消息发送器实例