feat(qqpush): 私聊推送接口与抽卡API token读取兼容
This commit is contained in:
@@ -80,11 +80,55 @@ class MessageSender:
|
||||
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, text: str, qq: Optional[int] = None) -> dict:
|
||||
"""向指定群发送纯文本消息,可选择 @ 成员。"""
|
||||
return await self._send_msg(group_id, MessageSegment.text(text), qq)
|
||||
|
||||
|
||||
async def _send_private(self, user_id: int, segment) -> dict:
|
||||
"""
|
||||
内部通用私聊发送方法(任意消息段)
|
||||
|
||||
Args:
|
||||
user_id: 目标好友 QQ 号
|
||||
segment: MessageSegment 实例
|
||||
|
||||
Returns:
|
||||
发送结果字典
|
||||
"""
|
||||
bot = self.get_bot()
|
||||
if not bot:
|
||||
raise ValueError("Bot 实例未设置,无法发送消息")
|
||||
try:
|
||||
message = Message([segment])
|
||||
result = await bot.call_api(
|
||||
"send_private_msg",
|
||||
user_id=user_id,
|
||||
message=message,
|
||||
__qqpush_source="danding_qqpush",
|
||||
)
|
||||
return {"success": True, "data": result, "message": "私聊消息发送成功"}
|
||||
except Exception as e:
|
||||
logger.warning(f"[QqPush] 私聊发送失败 user={user_id}: {e}")
|
||||
return {"success": False, "error": str(e), "message": f"私聊消息发送失败: {e}"}
|
||||
|
||||
async def send_to_private(self, user_id: int, image_base64: str) -> dict:
|
||||
"""向指定好友发送图片。"""
|
||||
return await self._send_private(user_id, MessageSegment.image(image_base64))
|
||||
|
||||
async def send_text_to_private(self, user_id: int, text: str) -> dict:
|
||||
"""向指定好友发送纯文本消息。"""
|
||||
return await self._send_private(user_id, MessageSegment.text(text))
|
||||
|
||||
async def is_friend(self, user_id: int) -> bool:
|
||||
"""检查指定用户是否为好友(查询好友列表)。"""
|
||||
bot = self.get_bot()
|
||||
if not bot:
|
||||
raise ValueError("Bot 实例未设置,无法查询好友列表")
|
||||
friends = await bot.call_api("get_friend_list")
|
||||
return any(int(f.get("user_id", 0)) == int(user_id) for f in friends)
|
||||
|
||||
|
||||
# 全局消息发送器实例
|
||||
sender = MessageSender()
|
||||
|
||||
Reference in New Issue
Block a user