调整内容
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user