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(), "@")