feat: 针对QQ平台增加私聊模式 #86

This commit is contained in:
Soulter
2023-04-14 20:28:54 +08:00
parent 20c19905ac
commit 2244386d33
2 changed files with 33 additions and 15 deletions
+25 -12
View File
@@ -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, [
+8 -3
View File
@@ -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)
])
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)
])