使用aj实现 chatgpt自动回复wx群聊消息

大家好,今天我想给大家介绍一下如何使用aj+chatgpt实现实时自动回复wx群聊消息(并非api接口方式,而是纯模拟手动的方式,99%不会异常)。 首先我先给展示一下我封装的三个常用的方法 画一个弹窗打印console输出

js 复制代码
var showUi = function (){
    Device.keepScreenOn() //保持常亮
    ##画一个弹窗
    Console.setBg('#ecf4fa')
    Console.setMode(3)
    Console.show()
    Console.log("此助手为微信小助手,接入chatgpt4.0.仅供娱乐。")

    SetInterval(()=>{
        try{
            getMessage() //定时任务
        }catch(e){
            Console.log(e)
        }
    },12000)
}

var rest = Console.requestFloating()
rest.onResolve((v)=>{
Thread(()=>{
showUi()
}) //开启一个线程并执行
}).onReject((v)=>{
Toast.show('拒绝授权')
})

1.自动点击指定文本的节点

js 复制代码
var click = function (text) {
    var find = false;
    var hd = Node().textReg(text).find()
    if (hd.size() > 0) {
    find = true;
    hd[0].click()
    }
    var hd2 = Node().desc(text).find()
    if (hd2.size() > 0) {
    find = true;
    hd2[0].click()
    }
    var hd3 = Node().className(text).find()
    if (hd3.size() > 0) {
    find = true;
    hd3[0].click()
    }
    if (find) {
    Console.log("找到节点并且点击=" + text)
    } else {
    Console.log("没找到节点=" + text)
    }
    return find
}

2.输入文本
找到text模糊匹配 or 完全匹配 or classname 为text的输入框,如果找到则输入text2文本

js 复制代码
var inputFunction = function (text, text2) {
    var find = false;
    var hd = Node().textReg(text).find()
    if (hd.size() > 0) {
    find = true;
    hd[0].input(text2)
    }
    var hd2 = Node().desc(text).find()
    if (hd2.size() > 0) {
    find = true;
    hd2[0].input(text2)
    }
    var hd3 = Node().className(text).find()
    if (hd3.size() > 0) {
    find = true;
    hd3[0].input(text2)
    }
    if (find) {
    Console.log("找到节点并且输入=" + text2)
    } else {
    Console.log("没找到输入节点=" + text)
    }
    return find
}

3.输入文本

找到节点为text的节点如果找到的话则返回node

js 复制代码
var nodeIsExit = function (text) {
    var find = false;
    var hd = Node().textReg(text).find()
    if (hd.size() > 0) {
    find = true;
    }
    var hd2 = Node().desc(text).find()
    if (hd2.size() > 0) {
    find = true;
    }
    var hd3 = Node().className(text).find()
    if (hd3.size() > 0) {
    find = true;
    }
    if (find) {
    Console.log("找到节点=" + text)
    } else {
    Console.log("没找到节点=" + text)
    }
    return find
}

首先要发送消息就要找到发送消息的每一个模块的 发送者信息和发送人的名称和发送内容

经过规律解析发现 每一个RelativeLayout为一个模块 我们可以规定 机器人只识别 @ + '想要发送的内容' 则逻辑就为

获取到gpt回复后接下来是发送文本消息 大概逻辑就是找到输入框,然后输入文本,然后点击发送,当然也会检测敏感词语

js 复制代码
var sendMessage = function (message,name) {
    if (nodeIsExit('android.widget.EditText')) {
    click('android.widget.EditText')
    Sleep(1000)
    var result = getGptText(message)
    if (result == '11'){
    Node().className('android.widget.EditText').find().input("哎呀抱歉"+name+"。您的问题涉及敏感词语,请换个问题再试试")
    }
    else if (result) {
    Node().className('android.widget.EditText').find().input("@"+name+" "+result)
    }else{
    Node().className('android.widget.EditText').find().input("哎呀抱歉"+name+"。"+machineName+"出错啦!请换个问"+machineName+"一下")
    }
    Sleep(1000)
    if (nodeIsExit('发送')) {
    click('发送')
    }
    }
}

以上就是核心代码,另外需要全部源码和对接gpt接口可以联系小编

aj教程官网:www.ajfz.mobi/

aj交流群: 934451569

相关推荐
OpsEye28 分钟前
兼顾数据安全与成本,私有化 AI 网关正在成为企业标配
javascript·ai编程
铁皮饭盒44 分钟前
还是网页端, 46mb模型, 抠图功能升级了, 抠任意主体, 还是不要显卡, 不要python, 满意吗?
前端·javascript·后端
福兮说1 小时前
IP 地址转整数的七个坑:192.168.1.1 算出负数、127.1 也是合法地址、存进 INT 直接溢出
javascript·网络·网络协议·tcp/ip·mysql·golang
YQteamdyq1 小时前
为什么 { ...state } 会悄悄杀掉响应式?yq-sanyi v0.4.2 的三处修复
前端·javascript
anew___2 小时前
《从零手写操作系统 (29):管道与重定向进阶——命名管道、Here Document与Shell语法扩展》
java·开发语言·前端·javascript·网络
光影少年3 小时前
如果 React 组件的属性没有传值,它的默认值是什么?
前端·javascript·react.js
Helix2504 小时前
2026编程入门指南:零基础如何科学选择第一门编程语言?
java·c语言·javascript·零基础·编程语言·python入门·编程就业
鬼手点金5 小时前
opencode-隐私优先配置
服务器·前端·javascript·bug·openclaw
且从容.5 小时前
JS篇-----
java·javascript·jvm
吠品5 小时前
箭头函数为什么不能 new
开发语言·javascript·原型模式