Skip to content

Message (基类)

所有消息类型的基类,提供通用属性和操作方法。

属性

属性类型说明
msg_idint消息唯一 ID(基于 runtime_id 哈希)
senderstr发送者名称
contentstr消息内容(文本表示)
sourceSource消息来源:Source.SELF / Source.OTHERS / Source.SYSTEM
roomstr | None群聊名称,私聊为 None
chat_typestr聊天类型("私聊" / "群聊" / "未知"
type_labelstr消息类型标签(如 "文本消息""图片消息" 等)
statusMessageStatus消息发送状态
pidint微信进程 PID
raw_namestr原始控件 Name 属性
runtime_idtupleUIAutomation RuntimeId
is_selfbool是否是自己发送的消息

ACTIONS 机制

每个消息子类通过 ACTIONS 列表声明支持哪些操作。调用不在列表中的方法会抛出 WxOperationError

所有可用操作标识:

操作说明
view查看/打开消息内容
hover悬浮鼠标到消息内容区域
scroll_to_visible将消息滚动到可视区域
refresh重新识别区域坐标和发送者
quote引用此消息
copy复制消息内容到剪贴板
collect收藏此条消息
translate翻译消息内容
forward转发给指定联系人
search搜一搜消息内容
revoke撤回消息
zoom_read放大阅读
add_to_emotion添加到自定义表情
save_as另存为到指定路径
delete删除消息

位置与可见性

is_in_list()

消息控件是否在消息列表的 UIA 树中。

  • 返回 bool

is_in_view

消息控件是否在 message_view 的可视矩形范围内。

  • 返回 bool

is_visible()

is_in_view 的别名。

  • 返回 bool

scroll_into_view()

微调滚动使消息出现在可见区域(前提:消息已在列表中)。

  • 返回 bool

scroll_to_visible(max_scroll=30)

持续向上滚动直到消息可见,超出范围自动回到底部。

  • 返回 bool

center

获取消息内容区域的屏幕中心坐标。

  • 返回 Tuple[int, int] | None

消息操作

view()

查看/打开消息内容(点击内容区域)。

hover()

悬浮鼠标到消息内容区域中心。

  • 返回 bool

refresh()

刷新消息属性(确保消息在视野内,重新识别区域坐标和发送者)。

  • 返回 Message

quote()

引用此消息(右键菜单 → 引用)。

copy()

复制消息内容。

  • 返回 str — 复制到剪贴板的文本

collect()

收藏此消息。

translate()

翻译消息内容。

forward(nicknames, remark=None)

转发消息给指定联系人。

  • nicknames str | List[str] — 转发目标(支持多人)
  • remark str | None — 转发留言

搜一搜消息内容。

revoke()

撤回消息(仅限自己发的消息,2 分钟内)。

zoom_read()

放大阅读。

add_to_emotion()

添加到自定义表情。

save_as(file_path)

另存为文件。

  • file_path str — 保存路径(含文件名)
  • 返回 bool

delete()

删除此消息(会弹出确认框并自动确认)。

click_content()

点击消息内容区域中心。

click_headimg()

点击消息头像区域中心。

序列化

to_dict()

转为字典。

  • 返回 dict

to_json(**kwargs)

转为 JSON 字符串。

  • 返回 str

示例

python
chat = wx.chat_with("张三")
messages = chat.get_visible_messages()

for msg in messages:
    print(f"[{msg.type_label}] {msg.sender}: {msg.content}")
    print(f"  来源: {msg.source}, ID: {msg.msg_id}, 群: {msg.room}")

# 操作最后一条消息
last = messages[-1]
last.quote()           # 引用
last.collect()         # 收藏
last.forward(["李四"]) # 转发
last.delete()          # 删除