From 2244386d338c0c19495e2e930eaad27251d4d6d8 Mon Sep 17 00:00:00 2001 From: Soulter <37870767+Soulter@users.noreply.github.com> Date: Fri, 14 Apr 2023 20:28:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=92=88=E5=AF=B9QQ=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A7=81=E8=81=8A=E6=A8=A1=E5=BC=8F=20#86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cores/qqbot/core.py | 37 +++++++++++++++++++++++++------------ model/platform/qq.py | 11 ++++++++--- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/cores/qqbot/core.py b/cores/qqbot/core.py index d9da00244..beec2bafc 100644 --- a/cores/qqbot/core.py +++ b/cores/qqbot/core.py @@ -18,7 +18,9 @@ from model.platform.qq import QQ from nakuru import ( CQHTTP, GroupMessage, - GroupMemberIncrease + GroupMemberIncrease, + FriendMessage + ) from nakuru.entities.components import Plain,At @@ -348,8 +350,9 @@ def send_message(platform, message, res, msg_ref = None, image = None, gocq_loop ''' 处理消息 +group: 群聊模式 ''' -def oper_msg(message, at=False, msg_ref = None, platform = None): +def oper_msg(message, group=False, msg_ref = None, platform = None): global session_dict, provider qq_msg = '' session_id = '' @@ -371,8 +374,8 @@ def oper_msg(message, at=False, msg_ref = None, platform = None): elif isinstance(message.message[0], At): print("[GOCQ-BOT] 接收到消息:"+ str(message.message[1].text)) - user_id = message.group_id - user_name = message.group_id + user_id = message.user_id + user_name = message.user_id global gocq_loop # 检查发言频率 @@ -381,7 +384,7 @@ def oper_msg(message, at=False, msg_ref = None, platform = None): return if platform == PLATFORM_QQCHAN: - if at: + if group: # 频道内 # 过滤@ qq_msg = message.content @@ -405,13 +408,17 @@ def oper_msg(message, at=False, msg_ref = None, platform = None): session_id = user_id if platform == PLATFORM_GOCQ: - if isinstance(message.message[0], Plain): - qq_msg = str(message.message[0].text) - elif isinstance(message.message[0], At): - qq_msg = str(message.message[1].text).strip() + if group: + if isinstance(message.message[0], Plain): + qq_msg = str(message.message[0].text) + elif isinstance(message.message[0], At): + qq_msg = str(message.message[1].text).strip() + else: + return + session_id = message.group_id else: - return - session_id = message.group_id + qq_msg = message.message[0].text + session_id = message.user_id # todo: 暂时将所有人设为管理员 role = "admin" @@ -618,7 +625,6 @@ class gocqClient(): # 收到群聊消息 @gocq_app.receiver("GroupMessage") async def _(app: CQHTTP, source: GroupMessage): - # 如果at了本机器人 if isinstance(source.message[0], Plain): if source.message[0].text.startswith('ai '): source.message[0].text = source.message[0].text[3:] @@ -631,6 +637,13 @@ class gocqClient(): else: return + @gocq_app.receiver("FriendMessage") + async def _(app: CQHTTP, source: FriendMessage): + if isinstance(source.message[0], Plain): + new_sub_thread(oper_msg, (source, False, None, PLATFORM_GOCQ)) + else: + return + @gocq_app.receiver("GroupMemberIncrease") async def _(app: CQHTTP, source: GroupMemberIncrease): await app.sendGroupMessage(source.group_id, [ diff --git a/model/platform/qq.py b/model/platform/qq.py index c7278b7fa..90de07c5f 100644 --- a/model/platform/qq.py +++ b/model/platform/qq.py @@ -8,6 +8,11 @@ class QQ: async def send_qq_msg(self, source, res): print("[System-Info] 回复QQ消息中..."+res) # 通过消息链处理 - await self.client.sendGroupMessage(source.group_id, [ - Plain(text=res) - ]) \ No newline at end of file + if source.type == "GroupMessage": + await self.client.sendGroupMessage(source.group_id, [ + Plain(text=res) + ]) + elif source.type == "FriendMessage": + await self.client.sendFriendMessage(source.user_id, [ + Plain(text=res) + ]) \ No newline at end of file