mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-01-19 01:21:01 +08:00
48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
# -*- coding: utf-8 -*-#
|
|
# filename: receive.py
|
|
import xml.etree.ElementTree as ET
|
|
|
|
from bridge.context import ContextType
|
|
from channel.chat_message import ChatMessage
|
|
from common.log import logger
|
|
|
|
|
|
def parse_xml(web_data):
|
|
if len(web_data) == 0:
|
|
return None
|
|
xmlData = ET.fromstring(web_data)
|
|
return WeChatMPMessage(xmlData)
|
|
|
|
|
|
class WeChatMPMessage(ChatMessage):
|
|
def __init__(self, xmlData):
|
|
super().__init__(xmlData)
|
|
self.to_user_id = xmlData.find("ToUserName").text
|
|
self.from_user_id = xmlData.find("FromUserName").text
|
|
self.create_time = xmlData.find("CreateTime").text
|
|
self.msg_type = xmlData.find("MsgType").text
|
|
try:
|
|
self.msg_id = xmlData.find("MsgId").text
|
|
except:
|
|
self.msg_id = self.from_user_id + self.create_time
|
|
self.is_group = False
|
|
|
|
# reply to other_user_id
|
|
self.other_user_id = self.from_user_id
|
|
|
|
if self.msg_type == "text":
|
|
self.ctype = ContextType.TEXT
|
|
self.content = xmlData.find("Content").text.encode("utf-8")
|
|
elif self.msg_type == "voice":
|
|
self.ctype = ContextType.TEXT
|
|
self.content = xmlData.find("Recognition").text.encode("utf-8") # 接收语音识别结果
|
|
elif self.msg_type == "image":
|
|
# not implemented
|
|
self.pic_url = xmlData.find("PicUrl").text
|
|
self.media_id = xmlData.find("MediaId").text
|
|
elif self.msg_type == "event":
|
|
self.content = xmlData.find("Event").text
|
|
else: # video, shortvideo, location, link
|
|
# not implemented
|
|
pass
|