这两天看网上有人写了个微信机器人,感觉挺有趣的,查了下网上资料的思路,大都都是用的网页版微信。

我用了一个小号微信去登陆网页版,发现既然登不了,必须使用我的老号才能登陆,网上还有人说以后腾讯要关掉网页版微信。

那么不用网页版不行吗,行的,方法应该有很多,我这里直接用了以前做的微信抢红包思路实现。

先上图:

在这里插入图片描述

原理其实很简单,就是利用android的accessibilityService来实现的。

关键代码:

switch (eventType) {
        case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED: // 通知栏事件
            if (PhoneController.isLockScreen(this)) { // 锁屏
                PhoneController.wakeAndUnlockScreen(this);   // 唤醒点亮屏幕
            }
            openAppByNotification(event);
            hasNotify = true;
            break;

        default:
            String answer = "";
            if (hasNotify) {
                /*
                try {
                    Thread.sleep(1000); // 停1秒, 否则在微信主界面没进入聊天界面就执行了fillInputBar
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                */

                System.out.println("收到新消息:" + substring);
                try {
                    String replay=readFileData("test.txt");

                    URL url = new URL("http://mzmzx.com/robot.php?question="+replay);
                    HttpURLConnection urlcon = (HttpURLConnection) url.openConnection();
                    urlcon.connect();         //获取连接
                    InputStream is = urlcon.getInputStream();
                    BufferedReader buffer = new BufferedReader(new InputStreamReader(is));
                    StringBuffer bs = new StringBuffer();
                    String l = null;
                    while ((l = buffer.readLine()) != null) {
                        bs.append(l).append("");
                    }
                    String json = bs.toString();
                    //String json="{ \"ret\": 0, \"msg\": \"ok\", \"data\": { \"session\": \"10000\", \"answer\": \"我猜你是想看美

女了吧!你可以对我说:\\\"找几张美女的图片。\\\"\" } }";
                    System.out.println(json);
                    Gson gson = new Gson();
                    JsonRootBean jsonRootBean = gson.fromJson(json, JsonRootBean.class);
                    answer = jsonRootBean.getData().getAnswer();
                    System.out.println("回复消息:" + answer);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


                if (fillInputBar(answer)) {
                    findAndPerformAction(UI.BUTTON, "发送");
                    /*
                    handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            performGlobalAction(AccessibilityService.GLOBAL_ACTION_BACK);   // 返回
                        }
                    }, 1500);
                    */
                    Intent homeIntent = new Intent(Intent.ACTION_MAIN);
                    homeIntent.addCategory(Intent.CATEGORY_HOME);
                    homeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(homeIntent);
                }
                hasNotify = false;
            }
            break;
    }

这个accessibilityServie服务是给残疾人士使用的,为了他们也能够方便的使用手机,我们就可以利用这个来实现微信自动发送,然后再注册一个腾讯AI闲聊接口。

大致流程,机器人收到消息,提取出消息文字到我的程序里面,我的程序再拿到这个消息发送给腾讯ai,腾讯ai返回回复消息给我的程序,我的程序再把这个消息通过机器人微信发送给我。

也许缺乏耐烦心的朋友可能会觉得比较绕。我直接把代码打包发网上吧,需要的朋友可以下载下来研究研究。

链接:https://pan.baidu.com/s/1-UIBmcCKRae152gVZz_cOQ
提取码:v58l

我的v: lb87626

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐