feat: [wcf-bmc]-1.SDK版本更改为v39.5.1

2.proto文件同步更新
3.SDK调试模式新增配置文件参数,默认不开启
4.目录名称变更为wcf-bmc
This commit is contained in:
chandler 2025-05-02 00:06:32 +08:00
parent 197550aead
commit 2cb758da01
12 changed files with 282 additions and 66 deletions

View File

@ -18,16 +18,16 @@ ___
<br/><br/> <br/><br/>
## v39.5.2 ## v39.5.1
### 版本列表 ### 版本列表
下载地址:[v39.5.2](https://github.com/lich0821/WeChatFerry/releases/tag/v39.5.2) 下载地址:[v39.5.1](https://github.com/lich0821/WeChatFerry/releases/tag/v39.5.1)
| 名称 | 版本 | 文件名 | | 名称 | 版本 | 文件名 |
|-----------------|-----------|---------------------------| |-----------------|-----------|---------------------------|
| 微信客户端 | 3.9.12.51 | WeChatSetup-3.9.12.51.exe | | 微信客户端 | 3.9.12.51 | WeChatSetup-3.9.12.51.exe |
| WeChatFerry-SDK | 39.5.2 | v39.5.2.zip | | WeChatFerry-SDK | 39.5.1 | v39.5.1.zip |
### 功能列表 ### 功能列表
@ -58,11 +58,18 @@ ___
| 查询朋友圈 | /friendCircle | ❔ | 待测试 | | 查询朋友圈 | /friendCircle | ❔ | 待测试 |
| 接收转账 | /receiveTransfer | ❌ | 该版本不支持 | | 接收转账 | /receiveTransfer | ❌ | 该版本不支持 |
### 提示
v39.5.2版本目前会出现注入失败的情况暂时推迟更新至该版本故本次采用v39.5.1进行过渡
### 2025-05-01 ### 2025-05-01
- 1.更新DLL版本迭代 - 1.更新DLL版本迭代
- 2.更新说明文件 - 2.更新说明文件
- 3.修改群消息策略功能,支持指定对应的群开启对应的功能 - 3.修改群消息策略功能,支持指定对应的群开启对应的功能
- 4.SDK调试模式新增配置文件参数默认不开启
- 5.proto文件同步更新
- 6.目录名称变更为wcf-bmc
<br/> <br/>

View File

@ -1,4 +1,4 @@
# WeChatFerry Java 客户端 maven版 # WCF-BMC 【WeChatFerry中的Springboot+Maven版的客户端】
⚠️ **只支持 Windows** ⚠️ ⚠️ **只支持 Windows** ⚠️
@ -14,7 +14,7 @@
| JDK | 1.8+ | √ | | JDK | 1.8+ | √ |
| Maven | 3.8+ | √ | | Maven | 3.8+ | √ |
| 微信客户端 | 3.9.12.51 | √ | | 微信客户端 | 3.9.12.51 | √ |
| WeChatFerry-SDK | 39.5.2 | √ | | WeChatFerry-SDK | 39.5.1 | √ |
| MySQL | 8.0+ | 备用 | | MySQL | 8.0+ | 备用 |
### 下载文件 ### 下载文件
@ -25,17 +25,17 @@
可以直接以WeChatFerry为根目录打开 可以直接以WeChatFerry为根目录打开
或者以WeChatFerry/clients/java/wechat-ferry-mvn为根目录打开 或者以WeChatFerry/clients/java/wcf-bmc为根目录打开
### 添加Maven ### 添加Maven
找到 WeChatFerry/clients/java/wechat-ferry-mvn/pom.xml 文件右键添加到Maven中会自动下载依赖 找到 WeChatFerry/clients/java/wcf-bmc/pom.xml 文件右键添加到Maven中会自动下载依赖
### 替换对应版本的dll ### 替换对应版本的dll
把刚下载的最新发布文件解压到本项目中的 dll 文件目录下,直接替换原因文件即可 把刚下载的最新发布文件解压到本项目中的 dll 文件目录下,直接替换原因文件即可
替换 `clients/java/wechat-ferry-mvn/dll` 目录下(也可以在配置文件中改为自定义的目录) 替换 `clients/java/wcf-bmc/dll` 目录下(也可以在配置文件中改为自定义的目录)
- sdk.dll - sdk.dll
- spy.dll - spy.dll
@ -56,7 +56,7 @@
wechat: wechat:
ferry: ferry:
# DLL文件位置 # DLL文件位置
dll-path: E:\WeChatFerry\clients\java\wechat-ferry-mvn\dll\sdk.dll dll-path: E:\WeChatFerry\clients\java\wcf-bmc\dll\sdk.dll
# socket端口 # socket端口
socket-port: 10086 socket-port: 10086
``` ```
@ -87,14 +87,14 @@ swagger地址http://localhost:9201/swagger-ui/index.html
或者进入到项目根目录使用命令打包 或者进入到项目根目录使用命令打包
``` shell ``` shell
cd wechat-ferry-mvn cd wcf-bmc
mvn clean mvn clean
mvn install mvn install
``` ```
打包后的文件在target/wechat-ferry-mvn-0.0.1-SNAPSHOT.jar 打包后的文件在target/wcf-bmc-x.x.x.x-SNAPSHOT.jar
## 安装部署 ## 安装部署
@ -110,7 +110,7 @@ mvn install
自己在项目中找到对应的文件,手动复制过去 自己在项目中找到对应的文件,手动复制过去
``` ```
wcf wcf-bmc
├─dll 核心dll目录 ├─dll 核心dll目录
│ ├─sdk.dll sdk文件 │ ├─sdk.dll sdk文件
│ ├─spy.dll spy文件 │ ├─spy.dll spy文件
@ -124,7 +124,7 @@ wcf
│ ├─application.yml 配置文件 │ ├─application.yml 配置文件
│ └─logback-spring.xml 日志配置文件 │ └─logback-spring.xml 日志配置文件
├─wechat-ferry-mvn-xx.x.x.jar 打包后的源码包 ├─wcf-bmc-xx.x.x.x.jar 打包后的源码包
``` ```
@ -142,7 +142,7 @@ cd wcf
3.执行启动命令jar名称换成自己的 3.执行启动命令jar名称换成自己的
``` shell ``` shell
java -Dconfig.dir=./config -jar wechat-ferry-mvn-xx.x.x.jar java -Dconfig.dir=./config -jar wcf-bmc-xx.x.x.x.jar
``` ```
## 参与开发 ## 参与开发
@ -164,7 +164,7 @@ java -Dconfig.dir=./config -jar wechat-ferry-mvn-xx.x.x.jar
### 模块结构 ### 模块结构
``` ```
wechat-ferry-mvn wcf-bmc
├─dll 核心dll ├─dll 核心dll
│ ├─sdk.dll sdk文件 │ ├─sdk.dll sdk文件
│ └─readme.txt 本目录说明文件 │ └─readme.txt 本目录说明文件
@ -270,7 +270,7 @@ message RoomData
如: 如:
```cmd ```cmd
feat(0): [java]-[wechat-ferry-mvn]-基础类目录划分迁移及代码格式 feat(0): [wcf-bmc]-基础类目录划分迁移及代码格式
``` ```
| 名称 | 版本 | | 名称 | 版本 |

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -11,15 +11,15 @@
<version>2.7.18</version> <version>2.7.18</version>
</parent> </parent>
<artifactId>wechat-ferry-mvn</artifactId> <artifactId>wcf-bmc</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>wechat-ferry-mvn</name> <name>wcf-bmc</name>
<version>39.2.4</version> <version>39.5.1.1</version>
<description>WeChatFerry客户端Java-Maven版</description> <description>WeChatFerry Springboot Maven Client (WCF-Springboot的Maven版客户端)</description>
<properties> <properties>
<application.main.class>com.wechat.ferry.WeChatFerryApplication</application.main.class> <application.main.class>com.wechat.ferry.WeChatFerryApplication</application.main.class>
<app.name>wechat-ferry-mvn</app.name> <app.name>wcf-bmc</app.name>
</properties> </properties>
<dependencies> <dependencies>
@ -142,6 +142,7 @@
<resources> <resources>
<resource> <resource>
<directory>src/main/resources</directory> <directory>src/main/resources</directory>
<filtering>true</filtering>
<!-- 排除特定资源 --> <!-- 排除特定资源 -->
<excludes> <excludes>
<exclude>bin/*</exclude> <exclude>bin/*</exclude>
@ -163,6 +164,7 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
<configuration> <configuration>
<finalName>${app.name}-${project.version}</finalName>
<includeSystemScope>true</includeSystemScope> <includeSystemScope>true</includeSystemScope>
<!-- 主类入口 --> <!-- 主类入口 -->
<mainClass>${application.main.class}</mainClass> <mainClass>${application.main.class}</mainClass>

View File

@ -33,7 +33,8 @@ public class WeChatConfiguration {
// Client client = new Client("127.0.0.1", 10086); // Client client = new Client("127.0.0.1", 10086);
// 本地启动 RPC // 本地启动 RPC
WeChatSocketClient wechatSocketClient = new WeChatSocketClient(properties.getSocketPort(), properties.getDllPath()); WeChatSocketClient wechatSocketClient =
new WeChatSocketClient(properties.getSocketPort(), properties.getSdkDebugSwitch(), properties.getDllPath());
// 是否已登录 // 是否已登录
// log.info("isLogin: {}", client.isLogin()); // log.info("isLogin: {}", client.isLogin());

View File

@ -29,6 +29,11 @@ public class WeChatFerryProperties {
*/ */
private Integer socketPort; private Integer socketPort;
/**
* SDK是否调试模式
*/
private Boolean sdkDebugSwitch = false;
/** /**
* 联系人类型-官方杂号禁止与其他分类重复(格式代码|名称) * 联系人类型-官方杂号禁止与其他分类重复(格式代码|名称)
* 使用时记得需要提取代码或者名称匹配 * 使用时记得需要提取代码或者名称匹配

View File

@ -147,6 +147,10 @@ public final class Wcf {
* <code>FUNC_INV_ROOM_MEMBERS = 114;</code> * <code>FUNC_INV_ROOM_MEMBERS = 114;</code>
*/ */
FUNC_INV_ROOM_MEMBERS(114), FUNC_INV_ROOM_MEMBERS(114),
/**
* <code>FUNC_SHUTDOWN = 255;</code>
*/
FUNC_SHUTDOWN(255),
UNRECOGNIZED(-1), UNRECOGNIZED(-1),
; ;
@ -278,6 +282,10 @@ public final class Wcf {
* <code>FUNC_INV_ROOM_MEMBERS = 114;</code> * <code>FUNC_INV_ROOM_MEMBERS = 114;</code>
*/ */
public static final int FUNC_INV_ROOM_MEMBERS_VALUE = 114; public static final int FUNC_INV_ROOM_MEMBERS_VALUE = 114;
/**
* <code>FUNC_SHUTDOWN = 255;</code>
*/
public static final int FUNC_SHUTDOWN_VALUE = 255;
public final int getNumber() { public final int getNumber() {
@ -336,6 +344,7 @@ public final class Wcf {
case 112: return FUNC_ADD_ROOM_MEMBERS; case 112: return FUNC_ADD_ROOM_MEMBERS;
case 113: return FUNC_DEL_ROOM_MEMBERS; case 113: return FUNC_DEL_ROOM_MEMBERS;
case 114: return FUNC_INV_ROOM_MEMBERS; case 114: return FUNC_INV_ROOM_MEMBERS;
case 255: return FUNC_SHUTDOWN;
default: return null; default: return null;
} }
} }
@ -23636,6 +23645,26 @@ java.lang.String defaultValue) {
*/ */
com.google.protobuf.ByteString com.google.protobuf.ByteString
getHomeBytes(); getHomeBytes();
/**
* <pre>
* 修改后的wxid
* </pre>
*
* <code>string alias = 5;</code>
* @return The alias.
*/
java.lang.String getAlias();
/**
* <pre>
* 修改后的wxid
* </pre>
*
* <code>string alias = 5;</code>
* @return The bytes for alias.
*/
com.google.protobuf.ByteString
getAliasBytes();
} }
/** /**
* Protobuf type {@code wcf.UserInfo} * Protobuf type {@code wcf.UserInfo}
@ -23654,6 +23683,7 @@ java.lang.String defaultValue) {
name_ = ""; name_ = "";
mobile_ = ""; mobile_ = "";
home_ = ""; home_ = "";
alias_ = "";
} }
@java.lang.Override @java.lang.Override
@ -23864,6 +23894,53 @@ java.lang.String defaultValue) {
} }
} }
public static final int ALIAS_FIELD_NUMBER = 5;
@SuppressWarnings("serial")
private volatile java.lang.Object alias_ = "";
/**
* <pre>
* 修改后的wxid
* </pre>
*
* <code>string alias = 5;</code>
* @return The alias.
*/
@java.lang.Override
public java.lang.String getAlias() {
java.lang.Object ref = alias_;
if (ref instanceof java.lang.String) {
return (java.lang.String) ref;
} else {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
alias_ = s;
return s;
}
}
/**
* <pre>
* 修改后的wxid
* </pre>
*
* <code>string alias = 5;</code>
* @return The bytes for alias.
*/
@java.lang.Override
public com.google.protobuf.ByteString
getAliasBytes() {
java.lang.Object ref = alias_;
if (ref instanceof java.lang.String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
alias_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
private byte memoizedIsInitialized = -1; private byte memoizedIsInitialized = -1;
@java.lang.Override @java.lang.Override
public final boolean isInitialized() { public final boolean isInitialized() {
@ -23890,6 +23967,9 @@ java.lang.String defaultValue) {
if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(home_)) { if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(home_)) {
com.google.protobuf.GeneratedMessageV3.writeString(output, 4, home_); com.google.protobuf.GeneratedMessageV3.writeString(output, 4, home_);
} }
if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alias_)) {
com.google.protobuf.GeneratedMessageV3.writeString(output, 5, alias_);
}
getUnknownFields().writeTo(output); getUnknownFields().writeTo(output);
} }
@ -23911,6 +23991,9 @@ java.lang.String defaultValue) {
if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(home_)) { if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(home_)) {
size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, home_); size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, home_);
} }
if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alias_)) {
size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, alias_);
}
size += getUnknownFields().getSerializedSize(); size += getUnknownFields().getSerializedSize();
memoizedSize = size; memoizedSize = size;
return size; return size;
@ -23934,6 +24017,8 @@ java.lang.String defaultValue) {
.equals(other.getMobile())) return false; .equals(other.getMobile())) return false;
if (!getHome() if (!getHome()
.equals(other.getHome())) return false; .equals(other.getHome())) return false;
if (!getAlias()
.equals(other.getAlias())) return false;
if (!getUnknownFields().equals(other.getUnknownFields())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false;
return true; return true;
} }
@ -23953,6 +24038,8 @@ java.lang.String defaultValue) {
hash = (53 * hash) + getMobile().hashCode(); hash = (53 * hash) + getMobile().hashCode();
hash = (37 * hash) + HOME_FIELD_NUMBER; hash = (37 * hash) + HOME_FIELD_NUMBER;
hash = (53 * hash) + getHome().hashCode(); hash = (53 * hash) + getHome().hashCode();
hash = (37 * hash) + ALIAS_FIELD_NUMBER;
hash = (53 * hash) + getAlias().hashCode();
hash = (29 * hash) + getUnknownFields().hashCode(); hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash; memoizedHashCode = hash;
return hash; return hash;
@ -24086,6 +24173,7 @@ java.lang.String defaultValue) {
name_ = ""; name_ = "";
mobile_ = ""; mobile_ = "";
home_ = ""; home_ = "";
alias_ = "";
return this; return this;
} }
@ -24131,6 +24219,9 @@ java.lang.String defaultValue) {
if (((from_bitField0_ & 0x00000008) != 0)) { if (((from_bitField0_ & 0x00000008) != 0)) {
result.home_ = home_; result.home_ = home_;
} }
if (((from_bitField0_ & 0x00000010) != 0)) {
result.alias_ = alias_;
}
} }
@java.lang.Override @java.lang.Override
@ -24165,6 +24256,11 @@ java.lang.String defaultValue) {
bitField0_ |= 0x00000008; bitField0_ |= 0x00000008;
onChanged(); onChanged();
} }
if (!other.getAlias().isEmpty()) {
alias_ = other.alias_;
bitField0_ |= 0x00000010;
onChanged();
}
this.mergeUnknownFields(other.getUnknownFields()); this.mergeUnknownFields(other.getUnknownFields());
onChanged(); onChanged();
return this; return this;
@ -24211,6 +24307,11 @@ java.lang.String defaultValue) {
bitField0_ |= 0x00000008; bitField0_ |= 0x00000008;
break; break;
} // case 34 } // case 34
case 42: {
alias_ = input.readStringRequireUtf8();
bitField0_ |= 0x00000010;
break;
} // case 42
default: { default: {
if (!super.parseUnknownField(input, extensionRegistry, tag)) { if (!super.parseUnknownField(input, extensionRegistry, tag)) {
done = true; // was an endgroup tag done = true; // was an endgroup tag
@ -24595,6 +24696,98 @@ java.lang.String defaultValue) {
onChanged(); onChanged();
return this; return this;
} }
private java.lang.Object alias_ = "";
/**
* <pre>
* 修改后的wxid
* </pre>
*
* <code>string alias = 5;</code>
* @return The alias.
*/
public java.lang.String getAlias() {
java.lang.Object ref = alias_;
if (!(ref instanceof java.lang.String)) {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
alias_ = s;
return s;
} else {
return (java.lang.String) ref;
}
}
/**
* <pre>
* 修改后的wxid
* </pre>
*
* <code>string alias = 5;</code>
* @return The bytes for alias.
*/
public com.google.protobuf.ByteString
getAliasBytes() {
java.lang.Object ref = alias_;
if (ref instanceof String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
alias_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
/**
* <pre>
* 修改后的wxid
* </pre>
*
* <code>string alias = 5;</code>
* @param value The alias to set.
* @return This builder for chaining.
*/
public Builder setAlias(
java.lang.String value) {
if (value == null) { throw new NullPointerException(); }
alias_ = value;
bitField0_ |= 0x00000010;
onChanged();
return this;
}
/**
* <pre>
* 修改后的wxid
* </pre>
*
* <code>string alias = 5;</code>
* @return This builder for chaining.
*/
public Builder clearAlias() {
alias_ = getDefaultInstance().getAlias();
bitField0_ = (bitField0_ & ~0x00000010);
onChanged();
return this;
}
/**
* <pre>
* 修改后的wxid
* </pre>
*
* <code>string alias = 5;</code>
* @param value The bytes for alias to set.
* @return This builder for chaining.
*/
public Builder setAliasBytes(
com.google.protobuf.ByteString value) {
if (value == null) { throw new NullPointerException(); }
checkByteStringIsUtf8(value);
alias_ = value;
bitField0_ |= 0x00000010;
onChanged();
return this;
}
@java.lang.Override @java.lang.Override
public final Builder setUnknownFields( public final Builder setUnknownFields(
final com.google.protobuf.UnknownFieldSet unknownFields) { final com.google.protobuf.UnknownFieldSet unknownFields) {
@ -34213,48 +34406,48 @@ java.lang.String defaultValue) {
"d\"\"\n\006DbRows\022\030\n\004rows\030\001 \003(\0132\n.wcf.DbRow\"5\n" + "d\"\"\n\006DbRows\022\030\n\004rows\030\001 \003(\0132\n.wcf.DbRow\"5\n" +
"\014Verification\022\n\n\002v3\030\001 \001(\t\022\n\n\002v4\030\002 \001(\t\022\r\n" + "\014Verification\022\n\n\002v3\030\001 \001(\t\022\n\n\002v4\030\002 \001(\t\022\r\n" +
"\005scene\030\003 \001(\005\"+\n\nMemberMgmt\022\016\n\006roomid\030\001 \001" + "\005scene\030\003 \001(\005\"+\n\nMemberMgmt\022\016\n\006roomid\030\001 \001" +
"(\t\022\r\n\005wxids\030\002 \001(\t\"D\n\010UserInfo\022\014\n\004wxid\030\001 " + "(\t\022\r\n\005wxids\030\002 \001(\t\"S\n\010UserInfo\022\014\n\004wxid\030\001 " +
"\001(\t\022\014\n\004name\030\002 \001(\t\022\016\n\006mobile\030\003 \001(\t\022\014\n\004hom" + "\001(\t\022\014\n\004name\030\002 \001(\t\022\016\n\006mobile\030\003 \001(\t\022\014\n\004hom" +
"e\030\004 \001(\t\"#\n\007DecPath\022\013\n\003src\030\001 \001(\t\022\013\n\003dst\030\002" + "e\030\004 \001(\t\022\r\n\005alias\030\005 \001(\t\"#\n\007DecPath\022\013\n\003src" +
" \001(\t\"4\n\010Transfer\022\014\n\004wxid\030\001 \001(\t\022\014\n\004tfid\030\002" + "\030\001 \001(\t\022\013\n\003dst\030\002 \001(\t\"4\n\010Transfer\022\014\n\004wxid\030" +
" \001(\t\022\014\n\004taid\030\003 \001(\t\"9\n\tAttachMsg\022\016\n\002id\030\001 " + "\001 \001(\t\022\014\n\004tfid\030\002 \001(\t\022\014\n\004taid\030\003 \001(\t\"9\n\tAtt" +
"\001(\004B\0020\001\022\r\n\005thumb\030\002 \001(\t\022\r\n\005extra\030\003 \001(\t\"\'\n" + "achMsg\022\016\n\002id\030\001 \001(\004B\0020\001\022\r\n\005thumb\030\002 \001(\t\022\r\n" +
"\010AudioMsg\022\016\n\002id\030\001 \001(\004B\0020\001\022\013\n\003dir\030\002 \001(\t\"y" + "\005extra\030\003 \001(\t\"\'\n\010AudioMsg\022\016\n\002id\030\001 \001(\004B\0020\001" +
"\n\010RichText\022\014\n\004name\030\001 \001(\t\022\017\n\007account\030\002 \001(" + "\022\013\n\003dir\030\002 \001(\t\"y\n\010RichText\022\014\n\004name\030\001 \001(\t\022" +
"\t\022\r\n\005title\030\003 \001(\t\022\016\n\006digest\030\004 \001(\t\022\013\n\003url\030" + "\017\n\007account\030\002 \001(\t\022\r\n\005title\030\003 \001(\t\022\016\n\006diges" +
"\005 \001(\t\022\020\n\010thumburl\030\006 \001(\t\022\020\n\010receiver\030\007 \001(" + "t\030\004 \001(\t\022\013\n\003url\030\005 \001(\t\022\020\n\010thumburl\030\006 \001(\t\022\020" +
"\t\"&\n\006PatMsg\022\016\n\006roomid\030\001 \001(\t\022\014\n\004wxid\030\002 \001(" + "\n\010receiver\030\007 \001(\t\"&\n\006PatMsg\022\016\n\006roomid\030\001 \001" +
"\t\"(\n\006OcrMsg\022\016\n\006status\030\001 \001(\005\022\016\n\006result\030\002 " + "(\t\022\014\n\004wxid\030\002 \001(\t\"(\n\006OcrMsg\022\016\n\006status\030\001 \001" +
"\001(\t\".\n\nForwardMsg\022\016\n\002id\030\001 \001(\004B\0020\001\022\020\n\010rec" + "(\005\022\016\n\006result\030\002 \001(\t\".\n\nForwardMsg\022\016\n\002id\030\001" +
"eiver\030\002 \001(\t\"\267\002\n\010RoomData\022)\n\007members\030\001 \003(" + " \001(\004B\0020\001\022\020\n\010receiver\030\002 \001(\t\"\267\002\n\010RoomData\022" +
"\0132\030.wcf.RoomData.RoomMember\022\024\n\007field_2\030\002" + ")\n\007members\030\001 \003(\0132\030.wcf.RoomData.RoomMemb" +
" \001(\005H\000\210\001\001\022\017\n\007field_3\030\003 \001(\005\022\024\n\007field_4\030\004 " + "er\022\024\n\007field_2\030\002 \001(\005H\000\210\001\001\022\017\n\007field_3\030\003 \001(" +
"\001(\005H\001\210\001\001\022\020\n\010capacity\030\005 \001(\005\022\024\n\007field_6\030\006 " + "\005\022\024\n\007field_4\030\004 \001(\005H\001\210\001\001\022\020\n\010capacity\030\005 \001(" +
"\001(\tH\002\210\001\001\022\017\n\007field_7\030\007 \001(\005\022\017\n\007field_8\030\010 \001" + "\005\022\024\n\007field_6\030\006 \001(\tH\002\210\001\001\022\017\n\007field_7\030\007 \001(\005" +
"(\005\022\016\n\006admins\030\t \003(\t\032E\n\nRoomMember\022\014\n\004wxid" + "\022\017\n\007field_8\030\010 \001(\005\022\016\n\006admins\030\t \003(\t\032E\n\nRoo" +
"\030\001 \001(\t\022\021\n\004name\030\002 \001(\tH\000\210\001\001\022\r\n\005state\030\003 \001(\005" + "mMember\022\014\n\004wxid\030\001 \001(\t\022\021\n\004name\030\002 \001(\tH\000\210\001\001" +
"B\007\n\005_nameB\n\n\010_field_2B\n\n\010_field_4B\n\n\010_fi" + "\022\r\n\005state\030\003 \001(\005B\007\n\005_nameB\n\n\010_field_2B\n\n\010" +
"eld_6*\362\005\n\tFunctions\022\021\n\rFUNC_RESERVED\020\000\022\021" + "_field_4B\n\n\010_field_6*\206\006\n\tFunctions\022\021\n\rFU" +
"\n\rFUNC_IS_LOGIN\020\001\022\026\n\022FUNC_GET_SELF_WXID\020" + "NC_RESERVED\020\000\022\021\n\rFUNC_IS_LOGIN\020\001\022\026\n\022FUNC" +
"\020\022\026\n\022FUNC_GET_MSG_TYPES\020\021\022\025\n\021FUNC_GET_CO" + "_GET_SELF_WXID\020\020\022\026\n\022FUNC_GET_MSG_TYPES\020\021" +
"NTACTS\020\022\022\025\n\021FUNC_GET_DB_NAMES\020\023\022\026\n\022FUNC_" + "\022\025\n\021FUNC_GET_CONTACTS\020\022\022\025\n\021FUNC_GET_DB_N" +
"GET_DB_TABLES\020\024\022\026\n\022FUNC_GET_USER_INFO\020\025\022" + "AMES\020\023\022\026\n\022FUNC_GET_DB_TABLES\020\024\022\026\n\022FUNC_G" +
"\026\n\022FUNC_GET_AUDIO_MSG\020\026\022\021\n\rFUNC_SEND_TXT" + "ET_USER_INFO\020\025\022\026\n\022FUNC_GET_AUDIO_MSG\020\026\022\021" +
"\020 \022\021\n\rFUNC_SEND_IMG\020!\022\022\n\016FUNC_SEND_FILE\020" + "\n\rFUNC_SEND_TXT\020 \022\021\n\rFUNC_SEND_IMG\020!\022\022\n\016" +
"\"\022\021\n\rFUNC_SEND_XML\020#\022\025\n\021FUNC_SEND_EMOTIO" + "FUNC_SEND_FILE\020\"\022\021\n\rFUNC_SEND_XML\020#\022\025\n\021F" +
"N\020$\022\026\n\022FUNC_SEND_RICH_TXT\020%\022\025\n\021FUNC_SEND" + "UNC_SEND_EMOTION\020$\022\026\n\022FUNC_SEND_RICH_TXT" +
"_PAT_MSG\020&\022\024\n\020FUNC_FORWARD_MSG\020\'\022\030\n\024FUNC" + "\020%\022\025\n\021FUNC_SEND_PAT_MSG\020&\022\024\n\020FUNC_FORWAR" +
"_ENABLE_RECV_TXT\0200\022\031\n\025FUNC_DISABLE_RECV_" + "D_MSG\020\'\022\030\n\024FUNC_ENABLE_RECV_TXT\0200\022\031\n\025FUN" +
"TXT\020@\022\026\n\022FUNC_EXEC_DB_QUERY\020P\022\026\n\022FUNC_AC" + "C_DISABLE_RECV_TXT\020@\022\026\n\022FUNC_EXEC_DB_QUE" +
"CEPT_FRIEND\020Q\022\026\n\022FUNC_RECV_TRANSFER\020R\022\024\n" + "RY\020P\022\026\n\022FUNC_ACCEPT_FRIEND\020Q\022\026\n\022FUNC_REC" +
"\020FUNC_REFRESH_PYQ\020S\022\030\n\024FUNC_DOWNLOAD_ATT" + "V_TRANSFER\020R\022\024\n\020FUNC_REFRESH_PYQ\020S\022\030\n\024FU" +
"ACH\020T\022\031\n\025FUNC_GET_CONTACT_INFO\020U\022\023\n\017FUNC" + "NC_DOWNLOAD_ATTACH\020T\022\031\n\025FUNC_GET_CONTACT" +
"_REVOKE_MSG\020V\022\027\n\023FUNC_REFRESH_QRCODE\020W\022\026" + "_INFO\020U\022\023\n\017FUNC_REVOKE_MSG\020V\022\027\n\023FUNC_REF" +
"\n\022FUNC_DECRYPT_IMAGE\020`\022\021\n\rFUNC_EXEC_OCR\020" + "RESH_QRCODE\020W\022\026\n\022FUNC_DECRYPT_IMAGE\020`\022\021\n" +
"a\022\031\n\025FUNC_ADD_ROOM_MEMBERS\020p\022\031\n\025FUNC_DEL" + "\rFUNC_EXEC_OCR\020a\022\031\n\025FUNC_ADD_ROOM_MEMBER" +
"_ROOM_MEMBERS\020q\022\031\n\025FUNC_INV_ROOM_MEMBERS" + "S\020p\022\031\n\025FUNC_DEL_ROOM_MEMBERS\020q\022\031\n\025FUNC_I" +
"\020rB\037\n\035com.wechat.ferry.entity.protob\006pro" + "NV_ROOM_MEMBERS\020r\022\022\n\rFUNC_SHUTDOWN\020\377\001B\037\n" +
"to3" "\035com.wechat.ferry.entity.protob\006proto3"
}; };
descriptor = com.google.protobuf.Descriptors.FileDescriptor descriptor = com.google.protobuf.Descriptors.FileDescriptor
.internalBuildGeneratedFileFrom(descriptorData, .internalBuildGeneratedFileFrom(descriptorData,
@ -34385,7 +34578,7 @@ java.lang.String defaultValue) {
internal_static_wcf_UserInfo_fieldAccessorTable = new internal_static_wcf_UserInfo_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_wcf_UserInfo_descriptor, internal_static_wcf_UserInfo_descriptor,
new java.lang.String[] { "Wxid", "Name", "Mobile", "Home", }); new java.lang.String[] { "Wxid", "Name", "Mobile", "Home", "Alias", });
internal_static_wcf_DecPath_descriptor = internal_static_wcf_DecPath_descriptor =
getDescriptor().getMessageTypes().get(20); getDescriptor().getMessageTypes().get(20);
internal_static_wcf_DecPath_fieldAccessorTable = new internal_static_wcf_DecPath_fieldAccessorTable = new

View File

@ -82,6 +82,10 @@ public class WeChatSocketClient {
this(DEFAULT_HOST, port, false, dllPath); this(DEFAULT_HOST, port, false, dllPath);
} }
public WeChatSocketClient(Integer port, boolean debug, String dllPath) {
this(DEFAULT_HOST, port, debug, dllPath);
}
public WeChatSocketClient(String host, Integer port, boolean debug, String dllPath) { public WeChatSocketClient(String host, Integer port, boolean debug, String dllPath) {
this.host = host; this.host = host;
this.port = port; this.port = port;

View File

@ -9,7 +9,7 @@ spring:
# 配置应用信息 # 配置应用信息
application: application:
# 应用名 # 应用名
name: wechat-ferry name: wcf-bmc
# swagger适配 # swagger适配
mvc: mvc:
pathmatch: pathmatch:
@ -26,6 +26,8 @@ wechat:
dll-path: E:\WeChatFerry\clients\java\wechat-ferry-mvn\dll\sdk.dll dll-path: E:\WeChatFerry\clients\java\wechat-ferry-mvn\dll\sdk.dll
# socket端口 # socket端口
socket-port: 10086 socket-port: 10086
# SDK是否调试模式
sdk-debug-switch: false
# 联系人类型-官方杂号,禁止与其他分类重复(格式:代码|名称) # 联系人类型-官方杂号,禁止与其他分类重复(格式:代码|名称)
contacts-type-mixed: contacts-type-mixed:
- filehelper|文件传输助手 - filehelper|文件传输助手

View File

@ -36,6 +36,7 @@ enum Functions {
FUNC_ADD_ROOM_MEMBERS = 0x70; FUNC_ADD_ROOM_MEMBERS = 0x70;
FUNC_DEL_ROOM_MEMBERS = 0x71; FUNC_DEL_ROOM_MEMBERS = 0x71;
FUNC_INV_ROOM_MEMBERS = 0x72; FUNC_INV_ROOM_MEMBERS = 0x72;
FUNC_SHUTDOWN = 0xFF;
} }
message Request message Request
@ -178,6 +179,7 @@ message UserInfo
string name = 2; // string name = 2; //
string mobile = 3; // string mobile = 3; //
string home = 4; // / string home = 4; // /
string alias = 5; // wxid
} }
message DecPath message DecPath