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