WeAutoCommon 1.1.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package WeAutoCommon --version 1.1.2
                    
NuGet\Install-Package WeAutoCommon -Version 1.1.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WeAutoCommon" Version="1.1.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="WeAutoCommon" Version="1.1.2" />
                    
Directory.Packages.props
<PackageReference Include="WeAutoCommon" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add WeAutoCommon --version 1.1.2
                    
#r "nuget: WeAutoCommon, 1.1.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package WeAutoCommon@1.1.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=WeAutoCommon&version=1.1.2
                    
Install as a Cake Addin
#tool nuget:?package=WeAutoCommon&version=1.1.2
                    
Install as a Cake Tool

WECHATAUTO.SDK - 面向AI的现代化微信自动化框架

.NET License

WeChatAuto.SDK 是一款面向 AI 的微信 PC 客户端自动化 SDK,基于 .NET 与 UI 自动化技术开发。它支持消息收发、转发、群聊与好友管理、朋友圈操作等多种功能,并专为集成人工智能(如 LLM 上下文交互)场景设计。SDK 提供丰富直观的 API,支持 .NET 现代化特性,比如依赖注入,让你轻松将自定义对象集成进自动化流程。

✨ 特性

  • 💬 消息操作 - 发送文字、表情、文件,支持 @ 提醒,转发消息等
  • 👥 群聊管理 - 创建群聊、添加/移除成员、更新群公告等
  • 📱 朋友圈操作 - 点赞、评论、监听朋友圈动态
  • 📋 通讯录管理 - 自动添加好友、管理联系人、处理新好友请求
  • 👂 事件监听 - 消息监听(提供LLM上下文)、朋友圈监听、新好友监听等
  • 🛡️ 降低风控 - 同时支持纯软件自动化以及结合硬件键鼠模拟器的自动化操作,满足不同业务需求和安全等级场景下的使用选择。
  • 🔧 易于集成 - 支持依赖注入,可轻松集成到现有项目
  • 🚀 多微信实例支持 - 同时管理多个微信客户端实例
  • 😊 AI 友好集成 - 原生支持 LLM 上下文对接并提供 MCP Server,便于对接主流智能体与平台(如 MEAI、SK、MAF),助力智能应用高效闭环与创新集成

📋 系统要求

  • Windows 操作系统
  • .NET Framework 4.8+ 或 .NET 6.0+ (Windows),支持.NET的框架有:net48;net481;net6.0-windows; net7.0-windows;net8.0-windows;net9.0-windows;net10.0-windows;
  • 微信 PC 客户端已安装并运行,本 SDK 基于微信 PC 客户端(版本号:3.9.12.55)的 UI 结构开发,不同版本可能存在兼容性问题。

🚀 快速开始

安装

通过 NuGet 安装:

dotnet add package WeChatAuto.SDK

基本使用

示例一 - 给好友(或群聊昵称)发送消息:
  • 步骤一:新建项目,如下所示:
dotnet new console -n demo01
  • 步骤二:将demo01.csproj项目文件的net10.0修改成net10.0-windows,如下所示:
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0-windows</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  • 步骤三:安装依赖
dotnet add package WeChatAuto.SdK
dotnet add package Microsoft.Extensions.DependencyInjection
  • 步骤四:项目demo01的Program.cs修改成如下:
using Microsoft.Extensions.DependencyInjection;
using WeChatAuto.Components;
using WeChatAuto.Services;

// 初始化WeAutomation服务
var serviceProvider = WeAutomation.Initialize(options =>
{
    options.DebugMode = true;   //开启调试模式,调试模式会在获得焦点时边框高亮,生产环境建议关闭
    //options.EnableRecordVideo = true;  //开启录制视频功能,录制的视频会保存在项目的运行目录下的Videos文件夹中
});

using var clientFactory = serviceProvider.GetRequiredService<WeChatClientFactory>();
Console.WriteLine($"当前客户端打开的微信客户端为:{string.Join(",", clientFactory.GetWeChatClientNames())},共计{clientFactory.GetWeChatClientNames().Count}个微信客户端。");
//获取当前打开的微信客户端名称列表
var clientNames = clientFactory.GetWeChatClientNames();    
//获取第一个微信客户端
var wxClient = clientFactory.GetWeChatClient(clientNames.First());  
 //通过微信客户端发送消息给好友昵称AI.Net,测试时请把AI.Net修改成自己的好友昵称
wxClient?.SendWho("AI.Net","你好,欢迎使用AI.Net微信自动化框架!"); 

注意

  1. 本项目仅支持 Windows 系统,请务必将项目文件的 TargetFramework 设置为 netxx.0-windows(如 net10.0-windows),否则编译时会出现警告。后续不再赘述。
  2. 如果是手动管理WeChatClientFactory,请在应用结束时运行clientFactory.Dispose(),或者象示例代码一样将代码放入using块自动释放,如果把WeChatAuto.SDK加入您的依赖注入容器,则不存在此问题。
  3. WeAutomation.Initialize()方法有两个重载,分别适用于:加入外部依赖注入与使用内部依赖注入。
示例二 - 演示监听好友(或者群聊昵称)的消息,使用消息上下文获取消息并回复,并且还演示了如何通过依赖注入获取消息上下文的注入对象,执行自己的业务逻辑:
  • 前置步骤:安装依赖
dotnet add package WeChatAuto.SdK
dotnet add package Microsoft.Extensions.Hosting
  • 将项目demo02的Program.cs修改成如下
using Microsoft.Extensions.Hosting;
using WeChatAuto.Services;
using WeChatAuto.Components;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

var builder = Host.CreateApplicationBuilder(args);

WeAutomation.Initialize(builder.Services, options =>
{
    //开启调试模式,调试模式会在获得焦点时边框高亮,生产环境建议关闭
    options.DebugMode = true;
    //开启录制视频功能,录制的视频会保存在项目的运行目录下的Videos文件夹中
    //options.EnableRecordVideo = true;  
});

//这里注入自已的服务(或者对象),如LLM服务等
builder.Services.AddSingleton<LLMService>();

var serviceProvider = builder.Services.BuildServiceProvider();
var clientFactory = serviceProvider.GetRequiredService<WeChatClientFactory>();
// 得到名称为"Alex"的微信客户端实例,测试时请将AI.net替换为你自己的微信昵称
var client = clientFactory.GetWeChatClient("Alex");
await client.AddMessageListener("测试11", (messageContext) =>
{
    var index = 0;
    //打印收到最新消息
    foreach (var message in messageContext.NewMessages)
    {
        index++;
        Console.WriteLine($"收到消息:{index}:{message.ToString()}");
        Console.WriteLine($"收到消息:{index}:{message.Who}:{message.MessageContent}");
    }
    //打印收到所有消息的后十条
    var allMessages = messageContext.AllMessages.Skip(messageContext.AllMessages.Count - 10).ToList();
    index = 0;
    foreach (var message in allMessages)
    {
        index++;
        Console.WriteLine($"...收到所有消息的前10条之第{index}条:{message.Who}:{message.MessageContent}");
        Console.WriteLine($".................详细之第{index}条:{message.ToString()}");
    }
    //是否有人@我
    if (messageContext.IsBeAt())
    {
        var messageBubble = messageContext.MessageBubbleIsBeAt().FirstOrDefault();
        if (messageBubble != null)
        {
            messageContext.SendMessage("我被@了!!!!我马上就回复你!!!!", new List<string> { messageBubble.Who });
        }
        else
        {
            messageContext.SendMessage("我被@了!!!!我马上就回复你!!!!");
        }
    }
    //是否有人引用了我的消息
    if (messageContext.IsBeReferenced())
    {
        messageContext.SendMessage("我被引用了!!!!");
    }
    //是否有人拍了拍我
    if (messageContext.IsBeTap())
    {
        messageContext.SendMessage("我被拍一拍了[微笑]!!!!");
    }
    if (!messageContext.IsBeAt() && !messageContext.IsBeReferenced() && !messageContext.IsBeTap())
    {
        //回复消息,这里可以引入大模型自动回复
        messageContext.SendMessage($"我收到了{messageContext.NewMessages.FirstOrDefault()?.Who}的消息:{messageContext.NewMessages.FirstOrDefault()?.MessageContent}");
    }
    //可以通过注入的服务容器获取你注入的服务实例,然后调用你的业务逻辑,一般都是LLM的自动回复逻辑
    var llmService = messageContext.ServiceProvider.GetRequiredService<LLMService>();
    llmService.DoSomething();
},
//下面的firstMessageAction可选,适用于添加消息监听时,需要我首先发送一些消息给好友的场景
sender =>
{
    //发送文本消息
    sender.SendMessage("你好啊!我是AI.Net,很高兴认识你!");
    //发送表情
    //sender.SendEmoji(1);
    //发送文件,改成你的文件路径
    //sender.SendFile(new string[] { @"C:\Users\Administrator\Desktop\me\avatar.png" });
});


var app = builder.Build();
await app.RunAsync();

/// <summary>
/// 一个包含LLM服务的Service类,用于注入到MessageContext中
/// </summary>
public class LLMService
{
    private ILogger<LLMService> _logger;
    public LLMService(ILogger<LLMService> logger)
    {
        _logger = logger;
    }
    public void DoSomething()
    {
        _logger.LogInformation("这里是你注入的服务实例,可以在这里编写你的业务逻辑  ");
    }
}

前置步骤跟Demo01一致,可以通过messageContext对象执行各种操作,也可以通过messageContext对象获得依赖注入容器,获取自己的对象,执行自己的业务逻辑;

示例三 - MCP Server的使用 - 以vscode为例讲解
  • 进入源码的.vscode\mcp.json,修改配置如下:
{
	"servers": {
		"wechat_mcp_server": {
			"type": "stdio",
			"command": "dotnet",
			"args": [
				"run",
                "--project",
                "改成你的WeChatAuto.MCP.csproj的路径"
			]
		}
	}
}
  • 在mcp.json页面点击"Start"按钮启动mcp server
  • 启动GitHub Copilot Chat,在Chat页提问: 请帮我给微信好友:AI.Net发送消息:Hello world!

⚙️ 架构概览

🚀 WeChatAuto.SDK 架构图

敬请关注后续更新,目前最主要提供了微信聊天的自动化,后期会提供对腾迅会议、微信公众号/订阅号等的自动化与MCP Server,如果您有什么建议,也可以跟我提。

WeChatAuto.SDK架构图

🚀 主要类与关系

WeChatAuto.SDK 采用 POM(页面对象模型)设计思想,针对微信的各类操作场景提供了清晰、模块化的对象抽象,大幅提升了自动化脚本的可读性与可维护性。

WeChatAuto.SDK 主要类关系示意

⛷️ 开发计划

类别 功能 完成度 备注
消息管理 发送文字消息
消息管理 发送文件
消息管理 发送自定义表情包 可按表情包索引、名称或者描述发送
消息管理 引用消息
消息管理 发送语音聊天/语音会议 适用于单个好友与群聊
消息管理 发送视频聊天 适用于单个好友
消息管理 发起直播 适用于群聊
消息管理 @群好友
消息管理 @所有人 适用于自有群管理
消息管理 合并转发
消息管理 获取消息
消息管理 监听消息
消息管理 引用时@
消息管理 通过消息添加好友
消息管理 通过消息获取详情
消息管理 获取卡片消息链接
消息管理 子窗口(好友/群)守护 误关闭子窗口重新打开
通讯录管理 获取好友列表
通讯录管理 发送好友请求
通讯录管理 接受好友请求
通讯录管理 删除好友
通讯录管理 监听好友请求
通讯录管理 监听好友请求,并自动通过
通讯通讯录管理 监听好友请求,并仅通过指定关键词的好友,自动加备注、标签
通讯管理 修改备注
通讯管理 增加标签
群管理 新建群
群管理 邀请入群
群管理 修改群名
群管理 修改群备注
群管理 修改群公告
群管理 修改我在本群昵称
群管理 消息免打扰
群管理 获取群列表
朋友圈 获取朋友圈内容
朋友圈 下载朋友圈图片
朋友圈 点赞朋友圈
朋友圈 自动评论朋友圈
MCP MCP Server
企业客服 自动根据企业知识库回答客户问题 根据公司知识库回答问题
企业督办 企业客户群提出问题的督办 企业客服的各种督办场景
腾迅会议 自动安排腾迅会议 对腾迅会议的自动化
公众号/订阅号 自动发布公众号/订阅号文章 对公众号/订阅号的自动化
效率 计划任务
  • 持续迭代优化核心功能,提升稳定性与兼容性
  • 推出更丰富的自动化操作场景,满足多样化业务需求
  • 完善开发文档与示例,提高使用与扩展的便捷性
  • 社区需求优先,欢迎反馈建议

⚠️ 注意事项

  1. 风控风险:频繁操作可能触发微信风控机制,建议:

    • 使用键鼠模拟器降低风险
    • 控制操作频率
    • 避免短时间内大量操作
  2. 微信版本:本 SDK 基于微信 PC 客户端(版本号:3.9.12.55)的 UI 结构开发,不同版本可能存在兼容性问题。

  3. 多实例支持:支持同时管理多个微信客户端,通过微信昵称区分不同实例。

🎈 关于键鼠模拟器

键鼠模拟器是一类专门的硬件设备,能够模拟物理键盘和鼠标的真实输入。相较于直接调用 PostMessage、SetInput 等 API 进行注入,这类传统软件方式往往会留下可被识别的痕迹,极易被微信等应用检测为自动化行为并引发风控。而键鼠模拟器通过硬件底层发送信号,模拟出的输入和人手操作无异,从而高度还原人类使用方式,在风控安全性和隐蔽性方面具备天然优势。

实际测试表明,在微信某些高敏感操作场景(比如群聊内加好友)下,借助键鼠模拟器能有效降低被风控的概率。需要注意的是,即便是手动操作,部分极端高风险情况下也有可能触发风控。因此,强烈建议在高敏感度和易风控场景优先考虑且规范使用键鼠模拟器,以获得更稳定和安全的自动化体验。

本 SDK 同时支持纯软件自动化以及结合硬件键鼠模拟器的自动化操作,满足不同业务需求和安全等级场景下的使用选择。

关于键鼠模拟器更深度的了解,请参见:键鼠模拟器

😂 关于微信4.X

微信4.x.x版本目前正在研发中,新方案基于机器视觉实现。不过,目前受限于机器视觉技术,对聊天记录的监控仍存在难度,暂不支持在生产环境中使用。如果你有更优的解决思路或建议,欢迎随时交流讨论!

Btw:近期有一个想法:因为桌面端存在缺陷,功能不足,所以放弃桌面端机器视觉方案,桌面端 配合 App端自动化,有同路人吗? 欢迎加我讨论😁

😊 关于VIP

由于时间和精力有限,为了更好地投入研发和持续改进产品,本人目前仅为已购买VIP服务的客户提供优先和深入的技术支持。这样做,是希望通过区分服务对象,专注为VIP客户带来更高品质、更有保障的体验。当然,广大普通用户依然欢迎通过 Issue 反馈和交流,只是服务响应的优先级和深度会有所不同。

🎉 VIP 客户可享受以下专属服务保障:

  • 💡 BUG 优先响应:出现 Bug 时,第一时间定位和解决,保障 VIP 项目的稳定运行。
  • 📚 完整开发文档:提供详细、及时更新的 API 开发文档,助力集成与开发效率。
  • 🎬 系统教学视频:涵盖入门到进阶的全流程教学视频,帮助用户高效掌握 SDK。
  • 👥 VIP 技术交流群:专属 VIP 交流群,优先、及时解答问题,实时高效支持。
  • 🚀 专属 VIP 私有仓库:VIP 客户将获专属私有仓库,会不定期提供丰富的应用层扩展与独享内容。

😊 非 VIP 客户:

WeChatAuto.SDK的非VIP与VIP的核心代码层面完全一致,非VIP没有任何功能与代码层面的限制,同样欢迎非VIP通过 Issue 提问或反馈问题,我会在时间允许情况下进行处理,但响应和解决可能会有延迟,敬请谅解。

如需升级成为 VIP,或了解 VIP 具体权益和支持方案,👉请与我联系。感谢理解与支持,让我有更多精力专注于技术创新与完善!

📝 许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。

🤝 贡献

欢迎提交 Issue 和 Pull Request!

🙏 致谢

在这里感谢那些还在为自由和正义而奋斗的人们🎉🎉


免责声明: 本 SDK 仅供学习和研究使用,请遵守微信使用条款,不得用于任何违法违规用途。使用本 SDK 产生的任何后果由使用者自行承担。

Product Compatible and additional computed target framework versions.
.NET net6.0-windows7.0 is compatible.  net7.0-windows was computed.  net7.0-windows7.0 is compatible.  net8.0-windows was computed.  net8.0-windows7.0 is compatible.  net9.0-windows was computed.  net9.0-windows7.0 is compatible.  net10.0-windows was computed.  net10.0-windows7.0 is compatible. 
.NET Framework net48 is compatible.  net481 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on WeAutoCommon:

Package Downloads
WeChatAuto.SDK

WeChatAuto.SDK is a modern WeChat automation framework for AI integration.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.9 111 2/8/2026
1.1.8 94 2/7/2026
1.1.7 110 2/7/2026
1.1.6 96 2/1/2026
1.1.5 96 2/1/2026
1.1.4 94 2/1/2026
1.1.3 97 2/1/2026
1.1.2 101 2/1/2026
1.1.1 97 1/30/2026
1.1.0 123 12/29/2025
1.0.6 104 12/28/2025
1.0.5 164 12/26/2025
1.0.4 267 12/19/2025
1.0.3 283 12/18/2025
1.0.2 275 12/18/2025
1.0.1 283 12/17/2025

update the package icon.