朋友圈
This commit is contained in:
parent
535bc1ceaa
commit
7275e1facf
@ -22,6 +22,7 @@ enum Functions {
|
|||||||
FUNC_EXEC_DB_QUERY = 0x50;
|
FUNC_EXEC_DB_QUERY = 0x50;
|
||||||
FUNC_ACCEPT_FRIEND = 0x51;
|
FUNC_ACCEPT_FRIEND = 0x51;
|
||||||
FUNC_RECV_TRANSFER = 0x52;
|
FUNC_RECV_TRANSFER = 0x52;
|
||||||
|
FUNC_REFRESH_PYQ = 0x53;
|
||||||
FUNC_DECRYPT_IMAGE = 0x60;
|
FUNC_DECRYPT_IMAGE = 0x60;
|
||||||
FUNC_ADD_ROOM_MEMBERS = 0x70;
|
FUNC_ADD_ROOM_MEMBERS = 0x70;
|
||||||
FUNC_DEL_ROOM_MEMBERS = 0x71;
|
FUNC_DEL_ROOM_MEMBERS = 0x71;
|
||||||
@ -42,6 +43,8 @@ message Request
|
|||||||
XmlMsg xml = 9;
|
XmlMsg xml = 9;
|
||||||
DecPath dec = 10;
|
DecPath dec = 10;
|
||||||
Transfer tf = 11;
|
Transfer tf = 11;
|
||||||
|
uint64 ui64 = 12; // 64 位整数,通用
|
||||||
|
bool flag = 13;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,14 +71,16 @@ message WxMsg
|
|||||||
{
|
{
|
||||||
bool is_self = 1; // 是否自己发送的
|
bool is_self = 1; // 是否自己发送的
|
||||||
bool is_group = 2; // 是否群消息
|
bool is_group = 2; // 是否群消息
|
||||||
int32 type = 3; // 消息类型
|
uint64 id = 3; // 消息 id
|
||||||
string id = 4; // 消息 id
|
uint32 type = 4; // 消息类型
|
||||||
string xml = 5; // 消息 xml
|
uint32 ts = 5; // 消息类型
|
||||||
string sender = 6; // 消息发送者
|
string roomid = 6; // 群 id(如果是群消息的话)
|
||||||
string roomid = 7; // 群 id(如果是群消息的话)
|
string content = 7; // 消息内容
|
||||||
string content = 8; // 消息内容
|
string sender = 8; // 消息发送者
|
||||||
string thumb = 9; // 缩略图
|
string sign = 9; // Sign
|
||||||
string extra = 10; // 附加内容
|
string thumb = 10; // 缩略图
|
||||||
|
string extra = 11; // 附加内容
|
||||||
|
string xml = 12; // 消息 xml
|
||||||
}
|
}
|
||||||
|
|
||||||
message TextMsg
|
message TextMsg
|
||||||
@ -170,4 +175,4 @@ message Transfer
|
|||||||
string wxid = 1; // 转账人
|
string wxid = 1; // 转账人
|
||||||
string tfid = 2; // 转账id transferid
|
string tfid = 2; // 转账id transferid
|
||||||
string taid = 3; // Transaction id
|
string taid = 3; // Transaction id
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
pub struct Request {
|
pub struct Request {
|
||||||
#[prost(enumeration = "Functions", tag = "1")]
|
#[prost(enumeration = "Functions", tag = "1")]
|
||||||
pub func: i32,
|
pub func: i32,
|
||||||
#[prost(oneof = "request::Msg", tags = "2, 3, 4, 5, 6, 7, 8, 9, 10, 11")]
|
#[prost(oneof = "request::Msg", tags = "2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13")]
|
||||||
pub msg: ::core::option::Option<request::Msg>,
|
pub msg: ::core::option::Option<request::Msg>,
|
||||||
}
|
}
|
||||||
/// Nested message and enum types in `Request`.
|
/// Nested message and enum types in `Request`.
|
||||||
@ -31,6 +31,11 @@ pub mod request {
|
|||||||
Dec(super::DecPath),
|
Dec(super::DecPath),
|
||||||
#[prost(message, tag = "11")]
|
#[prost(message, tag = "11")]
|
||||||
Tf(super::Transfer),
|
Tf(super::Transfer),
|
||||||
|
/// 64 位整数,通用
|
||||||
|
#[prost(uint64, tag = "12")]
|
||||||
|
Ui64(u64),
|
||||||
|
#[prost(bool, tag = "13")]
|
||||||
|
Flag(bool),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||||
@ -87,30 +92,36 @@ pub struct WxMsg {
|
|||||||
/// 是否群消息
|
/// 是否群消息
|
||||||
#[prost(bool, tag = "2")]
|
#[prost(bool, tag = "2")]
|
||||||
pub is_group: bool,
|
pub is_group: bool,
|
||||||
/// 消息类型
|
|
||||||
#[prost(int32, tag = "3")]
|
|
||||||
pub r#type: i32,
|
|
||||||
/// 消息 id
|
/// 消息 id
|
||||||
#[prost(string, tag = "4")]
|
#[prost(uint64, tag = "3")]
|
||||||
pub id: ::prost::alloc::string::String,
|
pub id: u64,
|
||||||
/// 消息 xml
|
/// 消息类型
|
||||||
#[prost(string, tag = "5")]
|
#[prost(uint32, tag = "4")]
|
||||||
pub xml: ::prost::alloc::string::String,
|
pub r#type: u32,
|
||||||
/// 消息发送者
|
/// 消息类型
|
||||||
#[prost(string, tag = "6")]
|
#[prost(uint32, tag = "5")]
|
||||||
pub sender: ::prost::alloc::string::String,
|
pub ts: u32,
|
||||||
/// 群 id(如果是群消息的话)
|
/// 群 id(如果是群消息的话)
|
||||||
#[prost(string, tag = "7")]
|
#[prost(string, tag = "6")]
|
||||||
pub roomid: ::prost::alloc::string::String,
|
pub roomid: ::prost::alloc::string::String,
|
||||||
/// 消息内容
|
/// 消息内容
|
||||||
#[prost(string, tag = "8")]
|
#[prost(string, tag = "7")]
|
||||||
pub content: ::prost::alloc::string::String,
|
pub content: ::prost::alloc::string::String,
|
||||||
/// 缩略图
|
/// 消息发送者
|
||||||
|
#[prost(string, tag = "8")]
|
||||||
|
pub sender: ::prost::alloc::string::String,
|
||||||
|
/// Sign
|
||||||
#[prost(string, tag = "9")]
|
#[prost(string, tag = "9")]
|
||||||
|
pub sign: ::prost::alloc::string::String,
|
||||||
|
/// 缩略图
|
||||||
|
#[prost(string, tag = "10")]
|
||||||
pub thumb: ::prost::alloc::string::String,
|
pub thumb: ::prost::alloc::string::String,
|
||||||
/// 附加内容
|
/// 附加内容
|
||||||
#[prost(string, tag = "10")]
|
#[prost(string, tag = "11")]
|
||||||
pub extra: ::prost::alloc::string::String,
|
pub extra: ::prost::alloc::string::String,
|
||||||
|
/// 消息 xml
|
||||||
|
#[prost(string, tag = "12")]
|
||||||
|
pub xml: ::prost::alloc::string::String,
|
||||||
}
|
}
|
||||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||||
@ -331,6 +342,7 @@ pub enum Functions {
|
|||||||
FuncExecDbQuery = 80,
|
FuncExecDbQuery = 80,
|
||||||
FuncAcceptFriend = 81,
|
FuncAcceptFriend = 81,
|
||||||
FuncRecvTransfer = 82,
|
FuncRecvTransfer = 82,
|
||||||
|
FuncRefreshPyq = 83,
|
||||||
FuncDecryptImage = 96,
|
FuncDecryptImage = 96,
|
||||||
FuncAddRoomMembers = 112,
|
FuncAddRoomMembers = 112,
|
||||||
FuncDelRoomMembers = 113,
|
FuncDelRoomMembers = 113,
|
||||||
@ -360,6 +372,7 @@ impl Functions {
|
|||||||
Functions::FuncExecDbQuery => "FUNC_EXEC_DB_QUERY",
|
Functions::FuncExecDbQuery => "FUNC_EXEC_DB_QUERY",
|
||||||
Functions::FuncAcceptFriend => "FUNC_ACCEPT_FRIEND",
|
Functions::FuncAcceptFriend => "FUNC_ACCEPT_FRIEND",
|
||||||
Functions::FuncRecvTransfer => "FUNC_RECV_TRANSFER",
|
Functions::FuncRecvTransfer => "FUNC_RECV_TRANSFER",
|
||||||
|
Functions::FuncRefreshPyq => "FUNC_REFRESH_PYQ",
|
||||||
Functions::FuncDecryptImage => "FUNC_DECRYPT_IMAGE",
|
Functions::FuncDecryptImage => "FUNC_DECRYPT_IMAGE",
|
||||||
Functions::FuncAddRoomMembers => "FUNC_ADD_ROOM_MEMBERS",
|
Functions::FuncAddRoomMembers => "FUNC_ADD_ROOM_MEMBERS",
|
||||||
Functions::FuncDelRoomMembers => "FUNC_DEL_ROOM_MEMBERS",
|
Functions::FuncDelRoomMembers => "FUNC_DEL_ROOM_MEMBERS",
|
||||||
@ -386,6 +399,7 @@ impl Functions {
|
|||||||
"FUNC_EXEC_DB_QUERY" => Some(Self::FuncExecDbQuery),
|
"FUNC_EXEC_DB_QUERY" => Some(Self::FuncExecDbQuery),
|
||||||
"FUNC_ACCEPT_FRIEND" => Some(Self::FuncAcceptFriend),
|
"FUNC_ACCEPT_FRIEND" => Some(Self::FuncAcceptFriend),
|
||||||
"FUNC_RECV_TRANSFER" => Some(Self::FuncRecvTransfer),
|
"FUNC_RECV_TRANSFER" => Some(Self::FuncRecvTransfer),
|
||||||
|
"FUNC_REFRESH_PYQ" => Some(Self::FuncRefreshPyq),
|
||||||
"FUNC_DECRYPT_IMAGE" => Some(Self::FuncDecryptImage),
|
"FUNC_DECRYPT_IMAGE" => Some(Self::FuncDecryptImage),
|
||||||
"FUNC_ADD_ROOM_MEMBERS" => Some(Self::FuncAddRoomMembers),
|
"FUNC_ADD_ROOM_MEMBERS" => Some(Self::FuncAddRoomMembers),
|
||||||
"FUNC_DEL_ROOM_MEMBERS" => Some(Self::FuncDelRoomMembers),
|
"FUNC_DEL_ROOM_MEMBERS" => Some(Self::FuncDelRoomMembers),
|
||||||
|
@ -544,7 +544,7 @@ pub fn enable_listen(wechat: &mut WeChat) -> Result<nng::Socket, Box<dyn std::er
|
|||||||
}
|
}
|
||||||
let req = wcf::Request {
|
let req = wcf::Request {
|
||||||
func: wcf::Functions::FuncEnableRecvTxt.into(),
|
func: wcf::Functions::FuncEnableRecvTxt.into(),
|
||||||
msg: None,
|
msg: Some(wcf::request::Msg::Flag(true)),
|
||||||
};
|
};
|
||||||
let response = match send_cmd(wechat, req) {
|
let response = match send_cmd(wechat, req) {
|
||||||
Ok(res) => res,
|
Ok(res) => res,
|
||||||
@ -770,8 +770,8 @@ pub fn recv_transfer(
|
|||||||
func: wcf::Functions::FuncRecvTransfer.into(),
|
func: wcf::Functions::FuncRecvTransfer.into(),
|
||||||
msg: Some(wcf::request::Msg::Tf(wcf::Transfer {
|
msg: Some(wcf::request::Msg::Tf(wcf::Transfer {
|
||||||
wxid: wxid,
|
wxid: wxid,
|
||||||
taid: transferid,
|
tfid: transferid,
|
||||||
tfid: transcationid,
|
taid: transcationid,
|
||||||
})),
|
})),
|
||||||
};
|
};
|
||||||
let response = match send_cmd(wechat, req) {
|
let response = match send_cmd(wechat, req) {
|
||||||
@ -794,6 +794,32 @@ pub fn recv_transfer(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 刷新朋友圈 */
|
||||||
|
pub fn refresh_pyq(id: u64, wechat: &mut WeChat) -> Result<bool, Box<dyn std::error::Error>> {
|
||||||
|
let req = wcf::Request {
|
||||||
|
func: wcf::Functions::FuncRefreshPyq.into(),
|
||||||
|
msg: Some(wcf::request::Msg::Ui64(id)),
|
||||||
|
};
|
||||||
|
let response = match send_cmd(wechat, req) {
|
||||||
|
Ok(res) => res,
|
||||||
|
Err(e) => {
|
||||||
|
error!("命令发送失败: {}", e);
|
||||||
|
return Err("接收转账失败".into());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if response.is_none() {
|
||||||
|
return Ok(false);
|
||||||
|
}
|
||||||
|
match response.unwrap() {
|
||||||
|
wcf::response::Msg::Status(status) => {
|
||||||
|
return Ok(status != -1);
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
return Ok(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
mod test {
|
mod test {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -858,9 +884,11 @@ mod test {
|
|||||||
fn test_recv_msg() {
|
fn test_recv_msg() {
|
||||||
let mut wechat = crate::wechat::WeChat::default();
|
let mut wechat = crate::wechat::WeChat::default();
|
||||||
let mut socket = crate::wechat::enable_listen(&mut wechat).unwrap();
|
let mut socket = crate::wechat::enable_listen(&mut wechat).unwrap();
|
||||||
for _ in 1..5 {
|
for _index in 0..5 {
|
||||||
|
let _ = crate::wechat::refresh_pyq(0, &mut wechat);
|
||||||
let msg = crate::wechat::recv_msg(&mut socket).unwrap();
|
let msg = crate::wechat::recv_msg(&mut socket).unwrap();
|
||||||
println!("WxMsg: {:?}", msg);
|
println!("WxMsg: {:?}", msg);
|
||||||
|
println!("--------------------------------------------------");
|
||||||
}
|
}
|
||||||
let _ = crate::wechat::disable_listen(&mut wechat);
|
let _ = crate::wechat::disable_listen(&mut wechat);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user