Autojs之QQ 群发消息(是QQ 群发,不是QQ群 发)

是QQ 群发,不是QQ群 发

前言

最近没写啥有趣的东西,但是已经很长时间没更新了,先挖个坑等寒假填

最近当了班委,就会有私戳多个同学的需要

在你要通知的人范围固定,通知内容固定时,可以用这个脚本

效果

autojs之QQ 群发消息(是QQ 群发,不是QQ群 发)

在这里插入图片描述在这里插入图片描述在这里插入图片描述

代码

"ui";
var appName = "QQ群发脚本";
ui.statusBarColor("#FF4FB3FF")//最最上面的顔色,设置当前界面的状态栏颜色

ui.layout(
    <vertical>
        <appbar>
            <toolbar id="toolbar" bg="#ff4fb3ff" title="{{appName}}">
                <button id="exit" bg="#ff4fb3ff" text="退出"
                    layout_gravity="right"
                    textColor="#ffffff"
                    textSize="20"
                    style="Widget.AppCompat.Button.Borderless" />
            </toolbar>
        </appbar>

        <button id="start" text="运行脚本" />
        <card w="*" h="auto" margin="10" cardCornerRadius="6dp"
            cardElevation="2dp" gravity="center">

            <vertical margin="10rpx">
                <text id="peopleList" text="人员名单"></text>
                <input hint="输入内容" id='userin'></input>
            </vertical>
        </card>

        <grid spanCount="3" id='dataList'>
            <checkbox w="auto" id="a1" text='{{this.name}}' marginRight="10"></checkbox>
        </grid>
    </vertical>
)


var dataList = [
    { name: "啊a测试1", qq: 123456},
    { name: "哈h测试2", qq: 123456},
    { name: "喀k测试3", qq: 123456},
    { name: "七q测试4", qq: 123456},
    { name: "一y测试5", qq: 123456},
]

//排序
dataList.sort(function compareFunction(item1, item2) {
    var t1 = item1.name
    var t2 = item2.name
    return t1.localeCompare(t2);
});
var nameList = []

ui.dataList.setDataSource(dataList)
ui.dataList.on("item_click", function (item) {
    //console.log(item)//{ name: '测试2', qq: 672788008 }
    var pos = nameList.indexOf(item.name)
    if (pos != -1) {
        nameList.splice(pos, 1)
    } else {
        nameList.push(item.name)
    }
    ui.peopleList.setText(nameList.toString())

});

ui.exit.click(() => {
    log("退出脚本");
    threads.shutDownAll()
    exit()
});
ui.start.click(function () {
    threads.start(function () {
        console.show();
    });

    //通过getText()获取输入的内容
    var text = ui.userin.getText();
    console.log("通知内容:")
    console.log(text);
    if(text.length() == 0){
        console.error("不能为空")
        return
    }

    console.log("通知人员:")
    console.log(nameList)
    if(nameList.length == 0){
        console.error("不能为空")
        return
    }

    toast("开始通知");

    var 子线程 = threads.start(function () {
        for (i = 0; i < nameList.length; i++) {
            toastLog("===准备通知:" + nameList[i]);
            var qq = dataList.find(items => items.name === nameList[i]).qq
            console.verbose(qq);
            try {
                app.startActivity({
                    action: "android.intent.action.VIEW",
                    data: "mqq://im/chat?chat_type=wpa&version=1&uin=" + qq,
                    packageName: "com.tencent.mobileqq",
                });
            } catch (e) {
                console.error(e)
            }
            sleep(1000)
            while (!className("EditText").depth(10).id("input").findOnce()) {//等待跳转页面成功
                console.verbose("等待跳转");
                sleep(1000)
                app.startActivity({
                    action: "android.intent.action.VIEW",
                    data: "mqq://im/chat?chat_type=wpa&version=1&uin=" + qq,
                    packageName: "com.tencent.mobileqq",
                });
            }
            input(text)//输入文字
            toast("请检查消息,并点击发送点击发送")
            sleep(1000)
            //点击发送
            while (!textStartsWith("发送").findOnce().click());
            toastLog("点击发送")
            //发送成功
            while (!className("TextView").depth(10).id("chat_item_content_layout").textContains(text).findOnce()) {
                console.verbose("等待发送");
                sleep(1000)
            }
            console.log(nameList[i] + " 完成===");
        }
        toast("通知完成");
        console.info("通知完成,脚本结束");
        exit()
    });

});

总结

在这里插入图片描述
这是之前的代码,可以看到有大片的内容都是复制粘贴的,有点追求的人都忍受不了,所以我一直在找一种方法,能简便的绑定数据和单选按钮

通过牙叔大佬的文章,找到了解决方法:

"ui";
ui.layout(
    <vertical>
        <grid spanCount="3" id='dataList'>
            <checkbox w="auto" id="a1" text='{{this.name}}' marginRight="10"></checkbox>
        </grid>
    </vertical>
)

var dataList = [
    { name: "啊a测试1", qq: 123456},
    { name: "哈h测试2", qq: 123456},
    { name: "喀k测试3", qq: 123456},
    { name: "七q测试4", qq: 123456},
    { name: "一y测试5", qq: 123456},
]

ui.dataList.setDataSource(dataList)

ui.dataList.on("item_click", function (item) {
    console.log(item)//{ name: '测试2', qq: 123}
});
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tfnmdmx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值