调整内容

This commit is contained in:
liuwei
2025-04-22 13:43:03 +08:00
parent 978593edd1
commit da5ce935b9
3 changed files with 76 additions and 82 deletions

View File

@@ -7,6 +7,7 @@ import json
class MessageType(Enum):
"""消息类型枚举"""
UNKNOWN = 0 # 未知类型
TEXT = 1 # 文本消息
IMAGE = 3 # 图片消息
VOICE = 34 # 语音消息
@@ -27,13 +28,26 @@ class MessageType(Enum):
class AppMessageType(Enum):
"""应用消息类型枚举"""
UNKNOWN = 0 # 未知类型
TEXT = 1 # 文本
IMG = 2 # 图片
AUDIO = 3 # 音频
VIDEO = 4 # 视频
LINK = 5 # 链接消息
FILE = 6 # 文件消息
FILE_NOTICE = 74 # 文件上传通知
MINIPROGRAM = 33 # 小程序消息
QUOTE = 57 # 引用消息
TRANSFER = 2000 # 转账消息
RED_PACKET = 2001 # 红包消息
FILE = 6 # 文件
QUOTE = 57 # 引用
EMOJI = 8 # 表情
LOCATION = 17 # 位置
APP_MSG = 33 # APP消息
MINIPROGRAM = 36 # 小程序
TRANSFER = 2000 # 转账
RED_PACKET = 2001 # 红包
CARD_TICKET = 2002 # 卡券
REAL_TIME_LOCATION_START = 17 # 实时位置共享开始
REAL_TIME_LOCATION_STOP = 18 # 实时位置共享结束
CARD = 42 # 名片
VOICE_REMIND = 43 # 语音提醒
FILE_NOTICE = 74 # 文件通知
CHANNELS = 51 # 视频号消息
@@ -217,6 +231,20 @@ class WxMessage:
def from_group(self) -> bool:
return self.to_user.endswith("@chatroom")
def is_at(self, wxid) -> bool:
"""是否被 @:群消息,在 @ 名单里,并且不是 @ 所有人"""
if not self.from_group():
return False # 只有群消息才能 @
if not re.findall(f"<atuserlist>[\s|\S]*({wxid})[\s|\S]*</atuserlist>", self.msg_source):
return False # 不在 @ 清单里
if re.findall(r"@(?:所有人|all|All)", self.content):
return False # 排除 @ 所有人
return True
def get_app_message_type(self) -> Optional[AppMessageType]:
"""获取应用消息类型"""
if self.msg_type != MessageType.APP or not self.content.xml_content: