这两天看网上有人写了个微信机器人,感觉挺有趣的,查了下网上资料的思路,大都都是用的网页版微信。
我用了一个小号微信去登陆网页版,发现既然登不了,必须使用我的老号才能登陆,网上还有人说以后腾讯要关掉网页版微信。
那么不用网页版不行吗,行的,方法应该有很多,我这里直接用了以前做的微信抢红包思路实现。
先上图:
原理其实很简单,就是利用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