From 1b41b53d67040dfbfc8b23c905fd456cc9a4c24e Mon Sep 17 00:00:00 2001 From: gallonyin Date: Thu, 23 Mar 2023 17:26:18 +0800 Subject: [PATCH 1/9] =?UTF-8?q?update=20=E4=BB=A3=E7=A0=81=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/org/yameida/worktool/MyApplication.kt | 2 +- .../java/org/yameida/worktool/model/WeworkMessageBean.java | 1 - app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt | 3 --- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/src/main/java/org/yameida/worktool/MyApplication.kt b/app/src/main/java/org/yameida/worktool/MyApplication.kt index 0348827..b753bf8 100644 --- a/app/src/main/java/org/yameida/worktool/MyApplication.kt +++ b/app/src/main/java/org/yameida/worktool/MyApplication.kt @@ -51,7 +51,7 @@ class MyApplication : Application() { if (SPUtils.getInstance().getString("uminit", "1") == "1") { UMConfigure.init(this, key, channel, UMConfigure.DEVICE_TYPE_PHONE, "") } - TalkingDataSDK.init(this, "80E9C84E39904DAFB28562910FF7C86C", "worktool_master", Constant.robotId); + TalkingDataSDK.init(this, "80E9C84E39904DAFB28562910FF7C86C", "worktool_master", Constant.robotId) //初始化企业微信sdk IWWAPIUtil.init(this) //初始化自动更新 diff --git a/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java b/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java index 6a2bb15..848a30b 100644 --- a/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java +++ b/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java @@ -296,7 +296,6 @@ public class WeworkMessageBean { //我的信息 public static class MyInfo { - //{姓名=企微RPA机器人, 工作签名=添加工作签名…, 手机=17326101105, 别名=企微RPA机器人, 对外信息显示=企微RPA机器人@擎盾数据, 职务=企微RPA机器人, 所在企业=TEST 擎盾数据, 性别=男} public String name; public String alias; public String gender; diff --git a/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt b/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt index 02ebd00..2a925e7 100644 --- a/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt +++ b/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt @@ -176,14 +176,11 @@ object WeworkTextUtil { ------------------ depth: 6 className: android.view.View ------------------ depth: 6 className: android.widget.RelativeLayout --------------------- depth: 7 className: android.widget.TextView ---------------------- depth: 7 text: 企微RPA机器人: --------------------- depth: 7 className: android.widget.LinearLayout ------------------------ depth: 8 className: android.widget.RelativeLayout --------------------------- depth: 9 className: android.widget.RelativeLayout ------------------------------ depth: 10 className: android.widget.TextView ------------------------------- depth: 10 text: 新公告 --------------- depth: 5 className: android.widget.TextView ---------------- depth: 5 text: 111 ------------------------------总结------------------------------ 图片 0tv 1iv (图片) From f20dd557a7717cb8464963e421005d3a192ed315 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Thu, 23 Mar 2023 18:00:02 +0800 Subject: [PATCH 2/9] update readme --- README.md | 1 + images/chatgpt.png | Bin 0 -> 87741 bytes 2 files changed, 1 insertion(+) create mode 100644 images/chatgpt.png diff --git a/README.md b/README.md index 6b3ef55..ca009a1 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ **发送消息** + 注:动图为机器人自动运行 diff --git a/images/chatgpt.png b/images/chatgpt.png new file mode 100644 index 0000000000000000000000000000000000000000..ec5f2080851e9208d5262089f303917e51ff02cb GIT binary patch literal 87741 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
x61L(K1gIa-ecaQ?S_lxDXDEZ>awfK{t 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 I88}D&FEYAL>i_@% literal 0 HcmV?d00001 From aec643964cc77084335a82c42ce22f13fe6180a8 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Thu, 23 Mar 2023 20:05:07 +0800 Subject: [PATCH 3/9] Update README.md --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ca009a1..df8dea3 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,15 @@ **发送消息** - - 注:动图为机器人自动运行 - 更多演示看这里 https://www.apifox.cn/apidoc/project-1035094/doc-840833 + + +机器人集成ChatGPT效果 + + ## 兼容版本(重要) 经过测试验证的版本:企业微信 4.0.2 至 4.1.0 (1月10日上架)、企业微信政务版 From f09cc3b48c98d79c0686789c09e1e9f8bc641a43 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Thu, 23 Mar 2023 20:35:11 +0800 Subject: [PATCH 4/9] =?UTF-8?q?update=20=E5=85=BC=E5=AE=B9=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/org/yameida/worktool/Constant.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/yameida/worktool/Constant.kt b/app/src/main/java/org/yameida/worktool/Constant.kt index 7c73280..cf24353 100644 --- a/app/src/main/java/org/yameida/worktool/Constant.kt +++ b/app/src/main/java/org/yameida/worktool/Constant.kt @@ -4,7 +4,7 @@ import com.blankj.utilcode.util.SPUtils object Constant { - val AVAILABLE_VERSION = arrayListOf("4.0.2", "4.0.6", "4.0.8", "4.0.10", "4.0.12", "4.0.16", "4.0.18", "4.0.19", "4.0.20", "4.1.0") + val AVAILABLE_VERSION = arrayListOf("4.0.2", "4.0.6", "4.0.8", "4.0.10", "4.0.12", "4.0.16", "4.0.18", "4.0.19", "4.0.20", "4.1.0", "4.1.2") const val PACKAGE_NAMES = "com.tencent.wework" const val WEWORK_NOTIFY = "wework_notify" const val LONG_INTERVAL = 5000L From fae1c5451a1ecc573b3f03f9a57a57bdd7a4d9d2 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Sat, 25 Mar 2023 00:12:27 +0800 Subject: [PATCH 5/9] =?UTF-8?q?update=20=E6=B6=88=E6=81=AF=E9=98=9F?= =?UTF-8?q?=E5=88=97=E5=8E=BB=E9=87=8D=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/yameida/worktool/model/WeworkMessageBean.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java b/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java index 848a30b..d2f781a 100644 --- a/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java +++ b/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java @@ -359,12 +359,12 @@ public class WeworkMessageBean { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; WeworkMessageBean that = (WeworkMessageBean) o; - return Objects.equals(messageId, that.messageId) && Objects.equals(titleList, that.titleList) && Objects.equals(messageList, that.messageList) && Objects.equals(log, that.log) && Objects.equals(roomType, that.roomType) && Objects.equals(receivedName, that.receivedName) && Objects.equals(receivedContent, that.receivedContent) && Objects.equals(at, that.at) && Objects.equals(atList, that.atList) && Objects.equals(originalContent, that.originalContent) && Objects.equals(nameList, that.nameList) && Objects.equals(extraText, that.extraText) && Objects.equals(textType, that.textType) && Objects.equals(groupName, that.groupName) && Objects.equals(groupOwner, that.groupOwner) && Objects.equals(selectList, that.selectList) && Objects.equals(groupNumber, that.groupNumber) && Objects.equals(groupAnnouncement, that.groupAnnouncement) && Objects.equals(groupRemark, that.groupRemark) && Objects.equals(groupTemplate, that.groupTemplate) && Objects.equals(newGroupName, that.newGroupName) && Objects.equals(newGroupAnnouncement, that.newGroupAnnouncement) && Objects.equals(removeList, that.removeList) && Objects.equals(showMessageHistory, that.showMessageHistory) && Objects.equals(myInfo, that.myInfo) && Objects.equals(objectName, that.objectName) && Objects.equals(qrcode, that.qrcode) && Objects.equals(friend, that.friend) && Objects.equals(fileBase64, that.fileBase64) && Objects.equals(fileUrl, that.fileUrl) && Objects.equals(fileType, that.fileType) && Objects.equals(type, that.type); + return Objects.equals(titleList, that.titleList) && Objects.equals(messageList, that.messageList) && Objects.equals(log, that.log) && Objects.equals(roomType, that.roomType) && Objects.equals(receivedName, that.receivedName) && Objects.equals(receivedContent, that.receivedContent) && Objects.equals(at, that.at) && Objects.equals(atList, that.atList) && Objects.equals(originalContent, that.originalContent) && Objects.equals(nameList, that.nameList) && Objects.equals(extraText, that.extraText) && Objects.equals(textType, that.textType) && Objects.equals(groupName, that.groupName) && Objects.equals(groupOwner, that.groupOwner) && Objects.equals(selectList, that.selectList) && Objects.equals(groupNumber, that.groupNumber) && Objects.equals(groupAnnouncement, that.groupAnnouncement) && Objects.equals(groupRemark, that.groupRemark) && Objects.equals(groupTemplate, that.groupTemplate) && Objects.equals(newGroupName, that.newGroupName) && Objects.equals(newGroupAnnouncement, that.newGroupAnnouncement) && Objects.equals(removeList, that.removeList) && Objects.equals(showMessageHistory, that.showMessageHistory) && Objects.equals(myInfo, that.myInfo) && Objects.equals(objectName, that.objectName) && Objects.equals(qrcode, that.qrcode) && Objects.equals(friend, that.friend) && Objects.equals(fileBase64, that.fileBase64) && Objects.equals(fileUrl, that.fileUrl) && Objects.equals(fileType, that.fileType) && Objects.equals(type, that.type); } @Override public int hashCode() { - return Objects.hash(messageId, titleList, messageList, log, roomType, receivedName, receivedContent, at, atList, originalContent, nameList, extraText, textType, groupName, groupOwner, selectList, groupNumber, groupAnnouncement, groupRemark, groupTemplate, newGroupName, newGroupAnnouncement, removeList, showMessageHistory, myInfo, objectName, qrcode, friend, fileBase64, fileUrl, fileType, type); + return Objects.hash(titleList, messageList, log, roomType, receivedName, receivedContent, at, atList, originalContent, nameList, extraText, textType, groupName, groupOwner, selectList, groupNumber, groupAnnouncement, groupRemark, groupTemplate, newGroupName, newGroupAnnouncement, removeList, showMessageHistory, myInfo, objectName, qrcode, friend, fileBase64, fileUrl, fileType, type); } @Override From 3591fee868212cf7eacdbe87688eb805b7e60123 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Sat, 25 Mar 2023 14:37:03 +0800 Subject: [PATCH 6/9] =?UTF-8?q?update=20=E6=B6=88=E6=81=AF=E9=98=9F?= =?UTF-8?q?=E5=88=97=E5=8E=BB=E9=87=8D=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/org/yameida/worktool/service/MyLooper.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt index b8ab56f..a101fef 100644 --- a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt +++ b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt @@ -99,8 +99,9 @@ object MyLooper { } else { WeworkController.mainLoopRunning = false LogUtils.v("加入指令到执行队列", if (message.fileBase64.isNullOrEmpty()) GsonUtils.toJson(message) else message.type) + getInstance().removeMessages(message.type * message.hashCode() + (System.currentTimeMillis() / 10000).toInt()) getInstance().sendMessage(Message.obtain().apply { - what = message.type * message.hashCode() + what = message.type * message.hashCode() + (System.currentTimeMillis() / 10000).toInt() obj = message.apply { messageId = messageList.messageId apiSend = messageList.apiSend From 40ca3c9fde0f1560d639d6b851c6b21e855e8337 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Sat, 25 Mar 2023 17:34:01 +0800 Subject: [PATCH 7/9] =?UTF-8?q?update=20at=E5=88=97=E8=A1=A8=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yameida/worktool/service/WeworkGetImpl.kt | 25 +++++++++++++------ .../worktool/service/WeworkOperationImpl.kt | 14 ++++++++++- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkGetImpl.kt b/app/src/main/java/org/yameida/worktool/service/WeworkGetImpl.kt index e013504..7ccf5c7 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkGetImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkGetImpl.kt @@ -285,6 +285,13 @@ object WeworkGetImpl { } } } + val tvCountFlag = AccessibilityUtil.findOnceByText(getRoot(), "查看全部群成员", exact = true) + val tvCount = AccessibilityUtil.findBackNode(tvCountFlag) + if (tvCount != null && tvCount.text != null) { + LogUtils.d("群成员: " + tvCount.text) + val count = tvCount.text.toString().replace("人", "") + weworkMessageBean.groupNumber = count.toIntOrNull() + } val gridView = AccessibilityUtil.findOneByClazz(getRoot(), Views.GridView) if (gridView != null && gridView.childCount >= 2) { val tvOwnerName = AccessibilityUtil.findOnceByClazz(gridView.getChild(0), Views.TextView) @@ -292,13 +299,17 @@ object WeworkGetImpl { LogUtils.d("群主: " + tvOwnerName.text) weworkMessageBean.groupOwner = tvOwnerName.text.toString() } - } - val tvCountFlag = AccessibilityUtil.findOnceByText(getRoot(), "查看全部群成员", exact = true) - val tvCount = AccessibilityUtil.findBackNode(tvCountFlag) - if (tvCount != null && tvCount.text != null) { - LogUtils.d("群成员: " + tvCount.text) - val count = tvCount.text.toString().replace("人", "") - weworkMessageBean.groupNumber = count.toIntOrNull() + if (!saveMembers && weworkMessageBean.groupNumber ?: 0 <= 8) { + val set = linkedSetOf() + for (i in 0 until gridView.childCount) { + val item = gridView.getChild(i) + val name = AccessibilityUtil.findOnceByClazz(item, Views.TextView)?.text?.toString() + ?: continue + set.add(name) + } + LogUtils.d("群成员: ${set.joinToString()}") + weworkMessageBean.nameList = set.toList() + } } val tvAnnouncementFlag = AccessibilityUtil.findOnceByText(getRoot(), "群公告", exact = true) val tvAnnouncement = AccessibilityUtil.findBackNode(tvAnnouncementFlag) diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt b/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt index d0a1b13..6f8f0d3 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt @@ -1707,8 +1707,20 @@ object WeworkOperationImpl { AccessibilityUtil.performClickWithSon(AccessibilityUtil.findFrontNode(voiceFlag)) } var atFailed = false - val atList = if (!at.isNullOrEmpty()) listOf(at) else atList + val atList = if (!at.isNullOrEmpty()) arrayListOf(at) else atList?.toMutableList() if (!atList.isNullOrEmpty() && (roomType == WeworkMessageBean.ROOM_TYPE_INTERNAL_GROUP || roomType == WeworkMessageBean.ROOM_TYPE_EXTERNAL_GROUP)) { + val nameList = arrayListOf() + if (atList.count { it.startsWith("#regex#") } > 0 && WeworkRoomUtil.intoGroupManager()) { + val groupInfo = WeworkGetImpl.getGroupInfoDetail(saveAddress = false, saveMembers = false) + nameList.addAll(groupInfo.nameList) + val regex = atList.first { it.startsWith("#regex#") }.split("#regex#").last().toRegex() + for (name in groupInfo.nameList) { + if (name != Constant.myName && name.matches(regex)) { + atList.add(name) + } + } + } + atList.removeIf { it.startsWith("#regex#") } atList.forEachIndexed { index, at -> if (index == 0) { AccessibilityUtil.findTextInput(getRoot(), "@") From 8bb0bed7ec8818b422ab4c05e3c94e97b3343c38 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Sat, 25 Mar 2023 18:24:01 +0800 Subject: [PATCH 8/9] =?UTF-8?q?update=20=E4=B8=B4=E6=97=B6=E5=85=81?= =?UTF-8?q?=E8=AE=B8=E6=9C=AC=E6=AC=A1=E8=BF=90=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/yameida/worktool/activity/ListenActivity.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/yameida/worktool/activity/ListenActivity.kt b/app/src/main/java/org/yameida/worktool/activity/ListenActivity.kt index a94d144..112b90c 100644 --- a/app/src/main/java/org/yameida/worktool/activity/ListenActivity.kt +++ b/app/src/main/java/org/yameida/worktool/activity/ListenActivity.kt @@ -24,6 +24,8 @@ import org.yameida.worktool.utils.envcheck.CheckRoot class ListenActivity : AppCompatActivity() { + var riskRetry: Int = 0 + companion object { /** * @param type 0=游客登录 @@ -132,8 +134,17 @@ class ListenActivity : AppCompatActivity() { ToastUtils.showLong("请先填写并保存链接号~") } else if (!PermissionHelper.isAccessibilitySettingOn()) { if (SPUtils.getInstance().getBoolean("risk", false)) { + if (riskRetry > 10) { + ToastUtils.showLong("再点${20 - riskRetry}次 允许本次运行") + } else { + ToastUtils.showLong("新号请勿使用模拟器/云手机!") + } + if (++riskRetry > 20) { + SPUtils.getInstance().put("risk", false) + startActivity(Intent(this, AccessibilityGuideActivity::class.java)) + ToastUtils.showLong("风险提示:临时允许本次运行") + } sw_accessibility.isChecked = false - ToastUtils.showLong("新号请勿使用模拟器/云手机!") } else { startActivity(Intent(this, AccessibilityGuideActivity::class.java)) } From aaf869e691de844d0081e4224e4f7303eb5cc593 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Mon, 27 Mar 2023 00:33:16 +0800 Subject: [PATCH 9/9] =?UTF-8?q?update=20=E6=B6=88=E6=81=AF=E6=92=A4?= =?UTF-8?q?=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../worktool/model/WeworkMessageBean.java | 2 + .../org/yameida/worktool/service/MyLooper.kt | 3 + .../worktool/service/WeworkController.kt | 19 ++++ .../worktool/service/WeworkOperationImpl.kt | 40 +++++++++ .../yameida/worktool/utils/WeworkTextUtil.kt | 89 ++++++++++++++++++- 5 files changed, 151 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java b/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java index d2f781a..ad2d7d3 100644 --- a/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java +++ b/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java @@ -38,6 +38,7 @@ public class WeworkMessageBean { * 打卡 CLOCK_IN * 切换企业 SWITCH_CORP * 推送链接 PUSH_LINK + * 撤回消息 RECALL_MESSAGE *

* 非操作类型 300 * 机器人普通日志记录 ROBOT_LOG @@ -81,6 +82,7 @@ public class WeworkMessageBean { public static final int CLOCK_IN = 222; public static final int SWITCH_CORP = 223; public static final int PUSH_LINK = 224; + public static final int RECALL_MESSAGE = 225; public static final int ROBOT_LOG = 301; public static final int ROBOT_ERROR_LOG = 302; diff --git a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt index a101fef..4d1479a 100644 --- a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt +++ b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt @@ -166,6 +166,9 @@ object MyLooper { WeworkMessageBean.PUSH_LINK -> { WeworkController.pushLink(message) } + WeworkMessageBean.RECALL_MESSAGE -> { + WeworkController.recallMessage(message) + } WeworkMessageBean.DISMISS_GROUP -> { WeworkController.dismissGroup(message) } diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt index 77b2cc6..d1079f5 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt @@ -363,6 +363,25 @@ object WeworkController { ) } + /** + * 撤回消息 + * @see WeworkMessageBean.RECALL_MESSAGE + * @param message#titleList 房间名称 + * @param message#originalContent 原始消息的内容 + * @param message#textType 原始消息的消息类型 + * @see WeworkMessageBean.TEXT_TYPE + */ + @RequestMapping + fun recallMessage(message: WeworkMessageBean): Boolean { + LogUtils.d("recallMessage(): ${message.titleList} ${message.originalContent} ${message.textType}") + return WeworkOperationImpl.recallMessage( + message, + message.titleList, + message.originalContent, + message.textType + ) + } + /** * 按手机号添加好友 * @see WeworkMessageBean.ADD_FRIEND_BY_PHONE diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt b/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt index 6f8f0d3..debcaae 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt @@ -764,6 +764,46 @@ object WeworkOperationImpl { } } + /** + * 撤回消息 + * @see WeworkMessageBean.RECALL_MESSAGE + * @param titleList 房间名称 + * @param originalContent 原始消息的内容 + * @param textType 原始消息的消息类型 + * @see WeworkMessageBean.TEXT_TYPE + */ + fun recallMessage( + message: WeworkMessageBean, + titleList: List, + originalContent: String, + textType: Int + ): Boolean { + val startTime = System.currentTimeMillis() + for (title in titleList) { + if (WeworkRoomUtil.intoRoom(title)) { + if (WeworkTextUtil.longClickMyMessageItem( + //聊天消息列表 1ListView 0RecycleView xViewGroup + AccessibilityUtil.findOneByClazz(getRoot(), Views.ListView), + textType, + originalContent, + "撤回" + ) + ) { + LogUtils.d("撤回成功") + uploadCommandResult(message, ExecCallbackBean.SUCCESS, "", startTime, titleList, listOf()) + return true + } else { + LogUtils.e("撤回失败 未找到目标消息") + uploadCommandResult(message, ExecCallbackBean.ERROR_TARGET, "撤回失败 未找到目标消息", startTime, listOf(), titleList) + return false + } + } + } + LogUtils.e("撤回失败 未找到房间") + uploadCommandResult(message, ExecCallbackBean.ERROR_TARGET, "撤回失败 未找到房间", startTime, listOf(), titleList) + return false + } + /** * 手机号添加好友或修改好友信息 * @see WeworkMessageBean.ADD_FRIEND_BY_PHONE diff --git a/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt b/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt index 2a925e7..178e159 100644 --- a/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt +++ b/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt @@ -280,6 +280,15 @@ object WeworkTextUtil { LogUtils.v("textType: $textType") return textType } + } else if (Views.ImageView.equals(relativeLayoutItem.getChild(1).className)) { + LogUtils.v("头像在右边 本条消息发送者为自己") + var textType = WeworkMessageBean.TEXT_TYPE_UNKNOWN + val subLayout = relativeLayoutItem.getChild(0) + if (subLayout.childCount > 0) { + textType = WeworkTextUtil.getTextType(subLayout) + LogUtils.v("textType: $textType") + return textType + } } } return WeworkMessageBean.TEXT_TYPE_UNKNOWN @@ -326,8 +335,9 @@ object WeworkTextUtil { } /** - * 群聊 长按消息条目 + * 长按消息条目 * 复制、转发、回复、收藏、置顶、多选、日程、待办、翻译、删除 + * 适用左侧发言者 * @param node 消息列表节点 * @param replyTextType 带回复消息类型 * @param replyNick 待回复人姓名 @@ -400,6 +410,50 @@ object WeworkTextUtil { return false } + /** + * 长按消息条目 + * 复制、转发、回复、收藏、置顶、多选、日程、待办、翻译、删除、撤回 + * 适用自己发言者 + * @param node 消息列表节点 + * @param replyTextType 带回复消息类型 + * @param replyContent 待回复内容 + * @param key 复制、转发、回复、收藏、多选 + * @return true 进行了长按 否则 false + */ + fun longClickMyMessageItem( + node: AccessibilityNodeInfo?, + replyTextType: Int, + replyContent: String, + key: String + ): Boolean { + if (node == null) return false + for (i in 0 until node.childCount) { + val item = node.getChild(node.childCount - 1 - i) ?: continue + val frontNode = getMyMessageListNode(item) + if (frontNode != null) { + val textType = getTextTypeFromItem(item) + if (replyTextType == WeworkMessageBean.TEXT_TYPE_UNKNOWN || replyTextType == textType) { + if (replyTextType == WeworkMessageBean.TEXT_TYPE_IMAGE) { + return longClickMyMessageItem(item, WeworkMessageBean.ROOM_TYPE_INTERNAL_CONTACT, key) + } + if ((replyTextType == WeworkMessageBean.TEXT_TYPE_FILE || replyTextType == WeworkMessageBean.TEXT_TYPE_VIDEO) + && replyContent.contains("###")) { + val replyContentList = replyContent.split("###") + if (AccessibilityUtil.findOnceByText(frontNode, replyContentList[0]) != null + && AccessibilityUtil.findOnceByText(frontNode, replyContentList[1]) != null) { + return longClickMyMessageItem(item, WeworkMessageBean.ROOM_TYPE_INTERNAL_GROUP, key) + } + } + val textNode = AccessibilityUtil.findOnceByText(frontNode, replyContent, exact = true) + if (textNode != null && replyContent.isNotEmpty()) { + return longClickMyMessageItem(item, WeworkMessageBean.ROOM_TYPE_INTERNAL_CONTACT, key) + } + } + } + } + return false + } + private fun longClickMessageItem(item: AccessibilityNodeInfo, roomType: Int, key: String): Boolean { val backNode = getMessageListNode(item, roomType) AccessibilityUtil.performLongClickWithSon(backNode) @@ -415,8 +469,26 @@ object WeworkTextUtil { return false } + private fun longClickMyMessageItem(item: AccessibilityNodeInfo, roomType: Int, key: String): Boolean { + val frontNode = getMyMessageListNode(item) + AccessibilityUtil.performLongClickWithSon(frontNode) + sleep(Constant.POP_WINDOW_INTERVAL) + val optionRvList = findAllByClazz(getRoot(), Views.RecyclerView, Views.ViewGroup) + for (optionRv in optionRvList) { + val keyTv = AccessibilityUtil.findOnceByText(optionRv, key, exact = true) + if (keyTv != null) { + AccessibilityUtil.performClick(keyTv) + if (AccessibilityExtraUtil.loadingPage("CustomDialog", timeout = Constant.POP_WINDOW_INTERVAL)) { + AccessibilityUtil.findTextAndClick(getRoot(), "确定", exact = true) + } + return true + } + } + return false + } + /** - * 群聊 提取消息主体框节点(昵称下面的气泡框) + * 提取消息主体框节点(昵称下面的气泡框) * 适用于左侧发言者 * @param item 消息item节点 */ @@ -434,4 +506,17 @@ object WeworkTextUtil { } return null } + + /** + * 提取消息主体框节点(昵称下面的气泡框) + * 适用于自己发言者 + * @param item 消息item节点 + */ + private fun getMyMessageListNode(item: AccessibilityNodeInfo): AccessibilityNodeInfo? { + val node = AccessibilityUtil.findAllOnceByClazz(item, Views.ImageView).lastOrNull() + if (node?.parent?.getChild(0) != node) { + return AccessibilityUtil.findFrontNode(node) + } + return null + } } \ No newline at end of file