From 4c8fedef6ecae016415f989b61c8639cb05da7b9 Mon Sep 17 00:00:00 2001 From: RockChinQ <1010553892@qq.com> Date: Sat, 24 Aug 2024 17:01:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20QQ=E5=AE=98=E6=96=B9api=E7=BE=A4?= =?UTF-8?q?=E8=81=8A=E5=92=8C=E7=A7=81=E8=81=8A=E6=94=AF=E6=8C=81=E5=9B=BE?= =?UTF-8?q?=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/platform/sources/qqbotpy.py | 40 ++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/pkg/platform/sources/qqbotpy.py b/pkg/platform/sources/qqbotpy.py index f607dd6e..a79013c3 100644 --- a/pkg/platform/sources/qqbotpy.py +++ b/pkg/platform/sources/qqbotpy.py @@ -3,16 +3,15 @@ from __future__ import annotations import logging import typing import datetime -import asyncio import re import traceback -import json -import threading import mirai import botpy import botpy.message as botpy_message import botpy.types.message as botpy_message_type +import pydantic +import pydantic.networks from .. import adapter as adapter_model from ...pipeline.longtext.strategies import forward @@ -389,6 +388,7 @@ class OfficialAdapter(adapter_model.MessageSourceAdapter): group_openid_mapping: OpenIDMapping[str, int] = None group_msg_seq = None + c2c_msg_seq = None def __init__(self, cfg: dict, ap: app.Application): """初始化适配器""" @@ -396,6 +396,7 @@ class OfficialAdapter(adapter_model.MessageSourceAdapter): self.ap = ap self.group_msg_seq = 1 + self.c2c_msg_seq = 1 switchs = {} @@ -475,28 +476,57 @@ class OfficialAdapter(adapter_model.MessageSourceAdapter): ] await self.bot.api.post_dms(**args) elif type(message_source) == OfficialGroupMessage: - if "image" in args or "file_image" in args: + + if "file_image" in args: # 暂不支持发送文件图片 continue + args["group_openid"] = self.group_openid_mapping.getkey( message_source.sender.group.id ) + if "image" in args: + uploadMedia = await self.bot.api.post_group_file( + group_openid=args["group_openid"], + file_type=1, + url=str(args['image']) + ) + + del args['image'] + args['media'] = uploadMedia + args['msg_type'] = 7 + args["msg_id"] = cached_message_ids[ str(message_source.message_chain.message_id) ] args["msg_seq"] = self.group_msg_seq self.group_msg_seq += 1 + await self.bot.api.post_group_message(**args) elif type(message_source) == OfficialFriendMessage: - if "image" in args or "file_image" in args: + if "file_image" in args: continue args["openid"] = self.member_openid_mapping.getkey( message_source.sender.id ) + if "image" in args: + uploadMedia = await self.bot.api.post_c2c_file( + openid=args["openid"], + file_type=1, + url=str(args['image']) + ) + + del args['image'] + args['media'] = uploadMedia + args['msg_type'] = 7 + args["msg_id"] = cached_message_ids[ str(message_source.message_chain.message_id) ] + + args["msg_seq"] = self.c2c_msg_seq + self.c2c_msg_seq += 1 + await self.bot.api.post_c2c_message(**args) async def is_muted(self, group_id: int) -> bool: