Fix chatroom system message receiving

This commit is contained in:
Changhua 2022-09-24 16:48:48 +08:00
parent 9ce7f59d80
commit cde5f854fe
2 changed files with 16 additions and 10 deletions

View File

@ -45,20 +45,25 @@ def main():
# 接收消息。先定义消息处理回调
def OnTextMsg(msg: sdk.WxMessage):
def getName(id):
contact = contacts.get(id)
if contact is None:
return id
return contact.wxName
s = "收到"
if msg.self == 1: # 忽略自己发的消息
s += f"来自自己的消息"
print(f"\n{s}")
return 0
msgType = WxMsgTypes.get(msg.type, '未知类型')
nickName = contacts.get(msg.wxId, {'wxName': 'NoBody'}).wxName
if msg.source == 0:
s += f"来自好友[{nickName}]的{msgType}消息:"
else:
groupName = contacts.get(msg.roomId, {'wxName': 'Unknown'}).wxName
nickName = getName(msg.wxId)
if msg.source == 1:
groupName = getName(msg.roomId)
s += f"来自群[{groupName}]的[{nickName}]的{msgType}消息:"
else:
s += f"来自[{nickName}]的{msgType}消息:"
s += f"\r\n{msg.content}"
if msg.type != 0x01:
@ -70,6 +75,7 @@ def main():
print("Message: 接收通知中......")
sdk.WxEnableRecvMsg(OnTextMsg) # 设置回调,接收消息
while True:
time.sleep(1)

View File

@ -69,13 +69,13 @@ void DispatchMsg(DWORD reg)
lMsg.id = GetBstrByAddress(*p + g_WxCalls.recvMsg.msgId);
lMsg.xml = GetBstrByAddress(*p + g_WxCalls.recvMsg.msgXml);
if (wcsstr(lMsg.xml, L"<membercount>") == NULL) {
// pMsg.roomId = {0};
lMsg.wxId = GetBstrByAddress(*p + g_WxCalls.recvMsg.roomId);
} else {
// 群里的系统消息xml 为空
if ((lMsg.xml == NULL) || (wcsstr(lMsg.xml, L"<membercount>") != NULL)) {
lMsg.source = 1;
lMsg.wxId = GetBstrByAddress(*p + g_WxCalls.recvMsg.wxId);
lMsg.roomId = GetBstrByAddress(*p + g_WxCalls.recvMsg.roomId);
} else {
lMsg.wxId = GetBstrByAddress(*p + g_WxCalls.recvMsg.roomId);
}
lMsg.content = GetBstrByAddress(*p + g_WxCalls.recvMsg.content);
g_MsgQueue.push(lMsg); // 发送消息