From 8b11077d09c8df4d7d63b5bdeb0bdeed5600c9fb Mon Sep 17 00:00:00 2001 From: Changhua Date: Sat, 20 Aug 2022 20:48:04 +0800 Subject: [PATCH] Refine Python SDK --- App/App.py | 20 ++++++++++++++------ SDKpy/sdkpy.cpp | 10 ++++++++-- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/App/App.py b/App/App.py index bf28580..b3454d7 100644 --- a/App/App.py +++ b/App/App.py @@ -6,10 +6,7 @@ import wcferry as sdk def main(): - print(dir(sdk)) # 查看SDK支持的方法和属性 - help(sdk.WxEnableRecvMsg) # 查看某方法的情况 - help(sdk.WxMessage) # 查看消息结构 - help(sdk.WxContact) # 查看通讯录结构 + help(sdk) # 查看SDK支持的方法和属性 # 初始化SDK,如果成功,返回0;否则失败 status = sdk.WxInitSDK() @@ -29,12 +26,23 @@ def main(): time.sleep(2) print("发送文本消息......") - sdk.WxSendTextMsg("filehelper", "", "message from WeChatFerry...") + sdk.WxSendTextMsg("filehelper", "message from WeChatFerry...") # 往文件传输助手发消息 + # sdk.WxSendTextMsg("xxxx@chatroom", "message from WeChatFerry...") # 往群里发消息(需要改成正确的 ID,下同) + # sdk.WxSendTextMsg("xxxx@chatroom", "message from WeChatFerry... @ ", "wxid_xxxxxxxxxxxx") # 往群里发消息,@某人 + # sdk.WxSendTextMsg("xxxx@chatroom", "message from WeChatFerry... @ ", "notify@all") # 往群里发消息,@所有人 time.sleep(2) print("发送图片消息......") sdk.WxSendImageMsg("filehelper", "test.jpg") + dbs = sdk.WxGetDbNames() + for db in dbs: + print(db) + + tables = sdk.WxGetDbTables(dbs[0]) + for t in tables: + print(f"{t.table}\n{t.sql}\n\n") + # 接收消息。先定义消息处理回调 def OnTextMsg(msg: sdk.WxMessage): s = "收到" @@ -44,7 +52,7 @@ def main(): return 0 - msgType = WxMsgTypes.get(msg.type, '未知消息类型') + msgType = WxMsgTypes.get(msg.type, '未知类型') nickName = contacts.get(msg.wxId, {'wxName': 'NoBody'}).wxName if msg.source == 0: s += f"来自好友[{nickName}]的{msgType}消息:" diff --git a/SDKpy/sdkpy.cpp b/SDKpy/sdkpy.cpp index 967f59a..32f484c 100644 --- a/SDKpy/sdkpy.cpp +++ b/SDKpy/sdkpy.cpp @@ -29,7 +29,11 @@ PYBIND11_MODULE(wcferry, m) .def_readonly("wxCountry", &WxContact::wxCountry) .def_readonly("wxProvince", &WxContact::wxProvince) .def_readonly("wxCity", &WxContact::wxCity) - .def_readonly("wxGender", &WxContact::wxGender); + .def_readonly("wxGender", &WxContact::wxGender); + + py::class_(m, "WxDbTable") + .def_readonly("table", &WxDbTable::table) + .def_readonly("sql", &WxDbTable::sql); m.def("WxInitSDK", &WxInitSDK, "Initiate SDK. Return 0 on success,else on failure."); m.def("WxEnableRecvMsg", &WxEnableRecvMsgPy, "Enable message receiving and provide a callback", py::arg("onMsg")); @@ -37,7 +41,9 @@ PYBIND11_MODULE(wcferry, m) m.def("WxSendTextMsg", &WxSendTextMsg, "Send text message.", py::arg("wxid"), py::arg("msg"), py::arg("atWxids")=L""); m.def("WxSendImageMsg", &WxSendImageMsg, "Send image message.", py::arg("wxid"), py::arg("path")); m.def("WxGetContacts", &WxGetContacts, py::return_value_policy::reference, "Get contact list."); - m.def("WxGetMsgTypes", &WxGetMsgTypes, py::return_value_policy::reference, "Get message types."); + m.def("WxGetMsgTypes", &WxGetMsgTypes, py::return_value_policy::reference, "Get message types."); + m.def("WxGetDbNames", &WxGetDbNames, py::return_value_policy::reference, "Get DB names."); + m.def("WxGetDbTables", &WxGetDbTables, py::return_value_policy::reference, "Get DB tables.", py::arg("db")); #ifdef VERSION_INFO m.attr("__version__") = VERSION_INFO;