Skip to content

Weixin

主入口类,连接并操作单个微信客户端实例。

构造方法

python
Weixin(
    pid=None,                          # 微信进程 PID,None 自动查找
    on_login=None,                     # 登录回调 callback(login: Login)
    default_login_timeout=60,          # 默认登录等待超时(秒)
    background=False,                  # 后台模式
    offscreen=True,                    # 后台模式下窗口移到屏幕外
    idle_wait=0,                       # 物理输入等待时间(秒)
    lock_input=False,                  # 操作期间锁定物理输入
    resize=False,                      # 自动调整窗口大小
    install_path=None,                 # 微信安装路径
    ocr="wcocr",                       # OCR 引擎 "wcocr" | "rapidocr"
    wxocr_weixin_install_path=None,    # 微信 OCR 插件所需的带版本号安装路径
    wxocr_plugin_path=None,            # 微信 OCR 插件 wxocr.dll 路径
)
参数类型默认值说明
pidint | NoneNone微信进程 PID,传入时精确绑定该进程,None 自动查找或启动
on_logincallable | NoneNone登录回调函数,签名 callback(login: Login)
default_login_timeoutfloat60等待手动登录超时(秒)
backgroundboolFalse后台模式(通过 SendMessage 发送虚拟鼠标/键盘消息)
offscreenboolTrue后台模式下窗口移到屏幕外,仅 background=True 时生效
idle_waitfloat0人类操作等待时间(秒),>0 时自动启动物理输入监控
lock_inputboolFalse操作期间锁定物理键盘鼠标(需管理员权限)
resizeboolFalse自动调整窗口大小(宽高为桌面的 1/3 × 1/2)
install_pathstr | NoneNone微信安装路径,None 自动从注册表检测
ocrstr"wcocr"OCR 引擎:"wcocr"(微信自带)或 "rapidocr"
wxocr_weixin_install_pathstr | NoneNone微信 OCR 所需的带版本号安装路径,None 自动检测
wxocr_plugin_pathstr | NoneNonewxocr.dll 路径,None 自动检测

属性

属性类型说明
pidint微信进程 PID
versionstr微信版本号
languagestr界面语言代码("cn" / "cn_t" / "en"
statusstr状态:"online" / "locked" / "login" / "offline"
is_onlinebool是否在线(主窗口是否存在)
has_sessionbool会话列表是否可见
chatChat | None当前主窗口激活的聊天对象
chatsList[Chat | SeparateChat]所有已打开的聊天窗口
current_versionstr当前微信版本号(通过设置页获取)

子模块

属性类型说明
navigatorNavigator导航栏
sessionSession会话列表
momentMoment朋友圈
collectionsCollections收藏
file_managerFileManager文件管理器
contactsContacts通讯录
settingsSettings设置
previewPreview图片/视频预览
browserBrowser内置浏览器

消息发送

send_text(nickname, content, quote=None, timeout=0)

发送文本消息。

  • nickname str — 联系人/群聊名称
  • content str — 文本内容
  • quote Message | int | None — 引用消息(Message 对象或 msg_id)
  • timeout float — 状态检测超时(秒),0 不等待
  • 返回 MessageStatus

send_file(nickname, file_path, quote=None, timeout=0)

发送文件。

  • file_path str | List[str] — 文件路径或路径列表,支持 URL

send_image(nickname, file_path, quote=None, timeout=0)

发送图片。

  • file_path str | List[str] — 图片路径或路径列表

send_video(nickname, file_path, quote=None, timeout=0)

发送视频。

  • file_path str | List[str] — 视频路径或路径列表

send_at(nickname, content, at_members, quote=None, timeout=0)

发送@消息(群聊)。

  • at_members List[str] — 要@的成员列表,["所有人"] 可@全员

send_emotion(nickname, keyword=None, index=1, quote=None, timeout=0)

发送表情。

  • keyword str | None — 搜索关键词,None 发送自定义表情
  • index int — 第几个表情(从 1 开始)

send_collection(nickname, keyword, quote=None, timeout=0)

发送收藏内容。

send_card(nickname, share)

发送名片。将 share 联系人的名片发送给 nickname

会话操作

chat_with(nickname, chat_type=None, force_search=False)

获取与指定联系人的聊天窗口对象。优先查找已打开的独立窗口。

  • nickname str — 联系人或群聊名称
  • chat_type List[str] | None — 搜索时优先匹配的分类,如 ["联系人", "群聊"]
  • force_search bool — 是否强制走搜索流程
  • 返回 Chat | SeparateChat

open_session(nickname)

通过在会话列表中查找并点击来打开指定会话。

  • 返回 Chat

open_session_by_search(nickname, chat_type=None, force_search=False)

通过搜索打开会话。

  • 返回 Chat

close_session(nickname)

关闭指定会话(从会话列表中隐藏)。

get_separate_chat(contact_name)

获取独立窗口的聊天会话。

  • contact_name str — 联系人名称
  • 返回 SeparateChat | None — 窗口不存在则返回 None

get_separate_chats()

获取所有已打开的独立聊天窗口(按 PID 过滤)。

  • 返回 List[SeparateChat]

create_room(nicknames)

创建群聊。

  • nicknames List[str] — 至少 2 个好友昵称

create_note(content)

创建笔记并写入内容,完成后关闭笔记窗口。

  • content str — 笔记文本内容

add_friend(keyword, message=None, remark=None, permission=None, hide_my_posts=False, hide_their_posts=False)

添加好友。

  • 返回 dict{"result": bool, "reason": str | None}

联系人管理

get_contact_profile(nickname)

获取联系人资料。

  • 返回 dict

set_contact_info(nickname, *, remark=None, labels=None, phones=None, description=None, images=None)

一次性设置联系人信息。

set_contact_remark(nickname, remark)

设置备注名。

set_contact_label(nickname, labels)

为联系人设置标签(覆盖式)。

  • labels List[str] — 标签列表

set_contact_phone(nickname, phones)

为联系人设置电话号码(覆盖式)。

  • phones List[str] — 电话号码列表

set_contact_description(nickname, description)

设置联系人的描述信息。

set_contact_image(nickname, images)

设置联系人的备注图片(覆盖式)。

  • images List[str] — 图片路径列表

add_contact_label(nickname, labels)

为联系人添加标签(增量式)。

add_contact_phone(nickname, phones)

为联系人添加电话号码(增量式)。

add_contact_image(nickname, images)

为联系人添加备注图片(增量式)。

remove_contact_label(nickname, labels)

移除联系人的标签。

remove_contact_phone(nickname, phones)

移除联系人的电话号码。

remove_contact_image(nickname, images)

删除联系人的备注图片。

  • images List[int] — 要删除的图片序号列表

collect_contact_image(nickname, images)

收藏联系人的指定备注图片。

  • images List[int] — 图片序号列表
  • 返回 int — 成功收藏的数量

save_contact_image(nickname, images, save_path)

保存联系人的指定备注图片到指定目录。

  • images List[int] — 图片序号列表
  • save_path str — 保存目录路径
  • 返回 int — 成功保存的数量

set_contact_star(nickname) / cancel_contact_star(nickname)

设为/取消星标朋友。

black_contact(nickname) / unblack_contact(nickname)

加入/移出黑名单。

delete_contact(nickname)

删除联系人。

recommend_contact(nickname, receiver_nickname)

将指定联系人推荐给另一个朋友(发送名片)。

  • 返回 bool

get_friend_permission(nickname)

获取联系人的朋友权限设置。

  • 返回 dict

set_friend_permission(nickname, permission="all", hide_my_posts=False, hide_their_posts=False)

设置朋友权限。

  • permission str"all""chatonly"

群聊管理

set_room_info(nickname, name=None, announcement=None, remark=None, my_nickname=None, mute=None, pin=None, save_address_book=None, display_member_nickname=None, fold=None)

一次性设置群聊信息。

参数类型说明
namestr | None群名称
announcementstr | None群公告
remarkstr | None群备注
my_nicknamestr | None我在群中的昵称
mutebool | None消息免打扰
pinbool | None置顶
save_address_bookbool | None保存到通讯录
display_member_nicknamebool | None显示群成员昵称
foldbool | None折叠会话

set_room_name(nickname, name)

设置群聊名称。

set_room_announcement(nickname, content)

设置群公告。

set_room_remark(nickname, remark)

设置群聊备注。

set_room_nickname(nickname, my_nickname)

设置我在群中的昵称。

add_room_members(nickname, members) / remove_room_members(nickname, members)

添加/移除群成员。

exit_room(nickname)

退出群聊。

pin_chat(nickname) / unpin_chat(nickname)

置顶/取消置顶会话。

mute_chat(nickname) / unmute_chat(nickname)

消息免打扰。

fold_chat(nickname) / unfold_chat(nickname)

折叠/取消折叠会话。

pin_room_chat(nickname) / unpin_room_chat(nickname)

置顶/取消置顶群聊会话。

mute_room_chat(nickname) / unmute_room_chat(nickname)

开启/关闭群聊消息免打扰。

fold_room_chat(nickname) / unfold_room_chat(nickname)

折叠/取消折叠群聊会话。

add_room_address_book(nickname) / remove_room_address_book(nickname)

将群聊保存到/从通讯录移除。

display_room_member_nickname(nickname) / hidden_room_member_nickname(nickname)

显示/隐藏群成员昵称。

clear_chat_history(nickname)

清空指定会话的聊天记录。

clear_room_chat_history(nickname)

清空指定群聊会话的聊天记录。

朋友圈

get_moments(count=10, position="top")

获取朋友圈动态列表,操作完自动关闭朋友圈窗口。

  • count int — 获取数量
  • position "top" | "current" — 起始位置
  • 返回 list

iter_moments(count=10, position="top")

逐条获取朋友圈动态(生成器),操作完自动关闭朋友圈窗口。

publish_moment(text=None, images=None, video=None, remind_contacts=None, permission=None, permission_contacts=None, permission_labels=None)

发布朋友圈,操作完自动关闭朋友圈窗口。支持纯文字、图文、视频三种模式(图片和视频互斥)。

参数类型说明
textstr | None文本内容
imagesList[str] | None图片路径列表(最多 9 张,与 video 互斥)
videostr | None视频路径(与 images 互斥)
remind_contactsList[str] | None提醒谁看的联系人列表
permissionstr | None"公开" / "私密" / "谁可以看" / "不给谁看"
permission_contactsList[str] | None隐私联系人列表
permission_labelsList[str] | None隐私标签列表
  • 返回 bool

like_moment(moment_item) / unlike_moment(moment_item)

对指定动态点赞/取消点赞,操作完自动关闭朋友圈窗口。

  • moment_item MomentItem — 朋友圈动态对象
  • 返回 bool

comment_moment(moment_item, content)

对指定动态评论,操作完自动关闭朋友圈窗口。

  • 返回 bool

like_moment_when(func, count=10, position="top")

条件批量点赞:遍历朋友圈,回调返回 True 时点赞。

  • func callable — 签名 func(liked_count: int, item: MomentItem) -> bool
  • 返回 List[MomentItem] — 成功点赞的动态列表

comment_moment_when(func, count=10, position="top")

条件批量评论:遍历朋友圈,回调返回评论内容时评论。

  • func callable — 签名 func(commented_count: int, item: MomentItem) -> str | None
  • 返回 List[MomentItem] — 成功评论的动态列表

capture_moment(moment_item)

对指定动态截图,操作完自动关闭朋友圈窗口。

  • 返回 bytes — PNG 格式

消息监听

on(events=None)

注册事件处理器(装饰器)。

python
@wx.on(Event.TEXT)
def handler(weixin, chat, message):
    print(message.content)

@wx.on([Event.TEXT, Event.IMAGE])
def on_multi(weixin, chat, message):
    print(message.type_label)

@wx.on()  # 监听所有消息
def on_all(weixin, chat, message):
    print(message)

once(events=None)

注册一次性事件处理器。

off(events=None, func=None)

移除事件处理器。

add_chat_listen(names)

注册要监听的聊天窗口。

  • names str | List[str]
  • 返回 List[SeparateChat]

add_all_chats_listen()

自动发现并注册所有已打开的独立聊天窗口。

  • 返回 List[SeparateChat]

remove_chat_listen(names)

移除指定聊天的监听。

  • names str | List[str]

remove_all_chats_listen()

移除所有聊天监听。

run(interval=0.1, idle_interval=0.1, auto_scan=False, listen_mode="ui")

启动消息监听(阻塞运行,Ctrl+C 退出)。

参数类型默认值说明
intervalfloat0.1有新消息时的轮询间隔(秒)
idle_intervalfloat0.1无新消息时的轮询间隔(秒)
auto_scanboolFalseUI 模式下是否自动扫描新窗口
listen_modestr"ui"监听模式:"ui"(UI 自动化)或 "db"(数据库监听)

数据库模式listen_mode="db"):

  • 通过监控微信 SQLite WAL 文件变化检测新消息
  • 无需打开独立窗口,自动监听所有会话
  • 需要指定 pid 参数和管理员权限
  • 回调中 chat 固定为 Nonemessagedict 字典
  • 详见 消息监听 - 数据库监听模式

数据库模式 message 字段:

字段说明
idlocal_id(本地消息 ID)
msg_idserver_id(服务器消息 ID)
type消息类型(对应 DBEvent 枚举值)
is_sender是否为自己发送(1=是, 0=否)
msg消息内容(文本或解析后的字典)
from_wxid发送者 wxid
sender发送者昵称
to_wxid接收者 wxid
receiver接收者昵称
room_wxid群聊 wxid
room_nickname群聊昵称
at_user_list@用户列表
create_time消息创建时间戳

stop()

停止监听。

通话

voice_call(nickname)

发起语音通话。

  • 返回 VoipCall

video_call(nickname)

发起视频通话。

  • 返回 VoipCall

设置

账号与登录

方法返回说明
get_account_info()dict获取账号信息(昵称、微信号、登录方式等)
get_login_method()str获取当前登录方式
set_login_method(method)切换登录方式
logout()退出登录

存储

方法返回说明
get_storage_info()dict获取存储空间详情
get_storage_path()str获取当前存储位置路径
change_storage_path(storage_path)更改微信存储位置
manage_storage()打开存储空间管理窗口
clean_redundant_data()清理历史版本冗余数据
clean_cache()清理缓存
clear_all_chats_history()清空全部聊天记录
get_keep_chat_history()bool获取"保留聊天记录"开关状态
set_keep_chat_history(enable)设置"保留聊天记录"开关

外观与语言

方法返回说明
get_language()str获取当前语言设置
set_language(language)切换语言
get_appearance()str获取外观设置
set_appearance(appearance)设置外观
get_font_size()int获取当前字体大小
set_font_size(size)设置字体大小(0~80,步长 10)

通用设置

方法返回说明
get_auto_start()bool开机自启动状态
set_auto_start(enable)设置开机自启动
get_auto_update()bool自动更新状态
set_auto_update(enable)设置自动更新
get_auto_download()dict自动下载设置 {"enabled": bool, "size_mb": int}
set_auto_download(enable, size_mb=None)设置自动下载

聊天设置

方法返回说明
get_translate_language()str文字翻译目标语言
set_translate_language(language)设置翻译目标语言
get_auto_translate()bool自动翻译开关
set_auto_translate(enable)设置自动翻译
get_readonly_file()bool以只读方式打开文件
set_readonly_file(enable)设置只读打开文件
get_show_search_history()bool显示网络搜索历史
set_show_search_history(enable)设置搜索历史显示
get_auto_voice_to_text()bool语音消息自动转文字
set_auto_voice_to_text(enable)设置语音自动转文字
get_use_system_browser()bool使用系统浏览器打开网页
set_use_system_browser(enable)设置使用系统浏览器

窗口与截图设置

方法返回说明
get_keep_window_on_screenshot()bool截图时保留当前窗口
set_keep_window_on_screenshot(enable)设置截图时保留窗口
get_hide_on_screen_share()bool演示屏幕时隐藏微信
set_hide_on_screen_share(enable)设置演示时隐藏微信

通知设置

方法返回说明
get_notification_info()dict获取通知设置信息
set_notification_info(**kwargs)设置通知信息
get_message_notification_sound()bool新消息通知声音
set_message_notification_sound(enable)设置通知声音
get_voip_notification_sound()bool语音/视频通话通知声音
set_voip_notification_sound(enable)设置通话通知声音
get_moment_notification_badge()bool通知标记朋友圈
set_moment_notification_badge(enable)设置朋友圈通知标记
get_game_notification_badge()bool通知标记游戏
set_game_notification_badge(enable)设置游戏通知标记
get_only_friend_interaction_reminder()bool仅提醒朋友与我的互动
set_only_friend_interaction_reminder(enable)设置仅朋友互动提醒

快捷键设置

方法返回说明
get_shortcut_info()dict获取快捷键设置信息
reset_shortcuts()恢复快捷键默认设置

插件

方法返回说明
get_plugins()List[dict]获取插件列表
download_plugin(plugin_name)bool下载插件

关于与更新

方法返回说明
get_about_info()dict获取关于微信页面信息
check_update()WeixinUpdate检查微信更新
open_help()打开微信帮助页面
upload_log()上传微信日志
open_feedback()打开意见反馈页面
open_privacy_agreement()打开隐私协议
open_service_agreement()打开服务协议

收藏

get_collections(category="全部收藏", count=None, speed=5)

获取收藏列表。

  • category str — 收藏分类
  • count int | None — 获取数量,None 获取全部
  • speed int — 滚动速度
  • 返回 List[Collection]

search_collections(keyword)

搜索收藏。

  • 返回 List[Collection]

create_collection_note(content=None)

新建收藏笔记。

  • 返回 NoteEditor

聊天文件

open_file_manager(filter_type=None)

打开聊天文件管理器。

  • filter_type str | None — 文件类型过滤
  • 返回 bool

search_files(keyword)

搜索聊天文件。

  • 返回 List[ChatFile]

get_files(filter_type=None)

获取聊天文件列表。

  • 返回 List[ChatFile]

状态与检查

is_locked()

检查微信是否已锁定。

  • 返回 bool

check_new_messages() / check_new_contacts() / check_new_moments()

检查是否有新通知(通过导航栏红点像素检测)。

  • 返回 bool

get_self_profile()

获取当前登录账号信息。

  • 返回 dict{"nickname": str, "account": str}

get_self_info()

获取当前登录账号信息(含头像)。

  • 返回 dict

快捷键

shortcut(name)

通过快捷键名称执行对应的键盘快捷键。

支持的名称(见 Weixin.SHORTCUTS):

名称快捷键
"发送消息"Enter
"语音输入文字"Ctrl+Win
"截图"Alt+A
"锁定"Ctrl+L
"显示窗口"Ctrl+Alt+W

也可以直接传入按键组合字符串,如 "Ctrl+Shift+A"

wakeup()

唤醒微信窗口(Ctrl+Alt+W)。

lock()

锁定微信(Ctrl+L)。

capture()

调用截图快捷键(Alt+A)。

voice_input()

语音输入文字(Ctrl+Win)。

enter()

发送消息(Enter)。

窗口操作

继承自 WeixinWindow

python
wx.activate()       # 激活窗口
wx.minimize()       # 最小化
wx.maximize()       # 最大化
wx.restore()        # 还原
wx.close()          # 关闭
wx.pin()            # 置顶
wx.unpin()          # 取消置顶
wx.move_offscreen() # 移到屏幕外
wx.move_back()      # 移回原位

click(control, button="left", click="once")

点击 uiautomation 控件。根据 background 属性选择点击方式。

  • control Control — uiautomation 控件对象
  • button str"left" / "right" / "middle"
  • click str"once" / "double"

微信更新

find_new_version_window()

检测是否弹出了新版本更新窗口。

  • 返回 bool

ignore_version_update()

忽略本次更新。

update_new_version()

更新新版本。

process_later()

稍后处理。

OCR

ocr(image) / get_image_text(image)

识别图片中的文字。

  • image bytes | str — 图片字节数据或文件路径
  • 返回 dict{text: {center, left_top, right_bottom, width, height}}

截图

get_screenshot()

对微信主窗口截图。

  • 返回 bytes — PNG 格式

screenshot(save_path)

截图并保存到文件。

类方法

Weixin.open(install_path=None, timeout=30)

启动一个新的微信客户端,返回 PID(支持多开)。

  • install_path str | None — 微信安装路径
  • timeout float — 等待启动超时(秒)
  • 返回 int — 新进程 PID