0202年能在安卓手机上玩QQ机器人吗
此教程将手把手教你怎么在手机qq上跑一个qq机器人
前言2019年1月1日,腾讯宣布关闭WebQQ服务,很多基于WebQQ的QQ机器人都失效了。似乎QQ机器人的时代结束了…..
结束了吗?没有!
WebQQ没了,我们可以用其他协议啊!据此,CoolQ和Mirai脱颖而出。
本文将介绍如何用开源库Mirai搭建基于安卓QQ协议的QQ机器人。
开源库介绍MiraiMirai是一个在全平台下运行,提供QQAndroid和TIMPC协议支持的高效率机器人框架
这个项目的名字来源于
京都动画作品《境界的彼方》的栗山未来(KuriyamaMirai)
CRYPTON以初音未来为代表的创作与活动(MagicalMirai)
图标以及形象由画师DazeCake绘制Mirai使用Kotlin开发,生成的java程序(jar)理论上可以在任何支持java的平台使用。下面来简单了解一下Mirai的结构(部分)...Mirai的核心MiraiCore:与腾讯QQ服务器直接对接,处理接收并发送原始消息。
Mirai的主程序(启动器)mirai-console-wrapper:启动bot控制台,可以接收与发送消息,同时向外部提供接收与发送消息的接口。
Mirai插件:基于消息接口为主程序mirai-console-wrapper提供各种各样的拓展功能,如天气查询,点歌,涩图等等…
其中一个插件mirai-api-http将消息的接收和发送接口以本地http/websocket服务的方式部署,只需要post/get就能实现消息的接收与发送,这就为使用其他语言开发Mirai功能提供了一个更简单的平台,基于此已有python-mirai,nodejs-mirai和gomirai三种非Kotlin/Java语言的SDK,以及接下来这个教程使用的RhinoJS也属于一种SDK。
Mirai也可以通过mirai-native插件实现与CoolQ插件的对接。
MozillaRhino:JavaScriptinJavaRhinoisanimplementationofJavaScriptinJava.
Rhino是一个可以在JavaScript上运行Java程序的库。我们可以通过JavaScript脚本访问miraihttpapi快速实现mirai功能开发。既然rhino能运行Java程序那为什么不直接使用mirai的java库而使用httpapi呢,因为我不会!(后续我会研究把rhino也做成mirai插件)
mirai-rhinojs-sdk:这是我自己编写&维护的一个小项目,为MiraiAPIHttp提供封装好的适用于MozillaRhino的SDK。
手机跑QQ机器人大概思路我们可以使用强大的Termux运行java以运行mirai和rhino。但有个问题是:直接在termux环境运行java是有bug的,该bug导致java无法解析域名,也就是说mirai的自动更新和post/gethttpapi会报错!既然Termux环境不行,那就用proot模拟一个其他linux的环境!
所以,本教程大概思路如下:①配置mirai&rhino运行环境(prootlinux和java等)→②配置开发环境(link文件等)→③提供一些参考文档
闲言少述,现在开始!
详细过程你首先需要下载万能的Termux,这是一切的开端。
①配置mirai&rhino运行环境安装prootlinux如果你提前已安装任意一prootlinux发行版,可以跳过这一步。请不要使用zsh终端。
在Termux终端运行以下代码以更新软件包至最新并安装wget和proot:
12aptupdate&&aptupgrade-yaptinstallwgetproot-y授予Termux存储空间访问权限:
1termux-setup-storage你可以在外部存储空间创建一个文件夹,该文件夹存放你的miraibot源码(js),然后将其链接至termux:
1ln-s/storage/emulated/0/QBotSourceCode~/QBotSourceCode下载一个linuxrootfs,这里我用ubuntu/bionic作为示范:
1wgethttps://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/bionic/arm64/default/20200331_07%3A53/rootfs.tar.xz-O~/ubuntu.tar.xz创建一个文件夹并将rootfs解压进去:
123456789mkdirubuntumvubuntu.tar.xzubuntu/cdubuntu#解压xz-dubuntu.tar.xztar-xvfubuntu.tar#删除压缩包rmubuntu.tarcd~创建一个proot启动脚本:
123touchstartubuntu.shecho-e"#!/bin/bash unsetLD_PRELOAD proot--link2symlink-Subuntu-b/sys-b/dev-b/proc-b~/QBotSourceCode-w/root/usr/bin/env-iHOME=/rootLANG=C.UTF-8PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbinTERM=xterm-256color/bin/bash--login">~/startubuntu.shchmod+xstartubuntu.sh注意脚本中的-Subuntu和-b~/QBotSourceCode,这两个目录分别为linuxproot根目录和上面链接到termux内部的源码目录,如果你用了其他名称请别忘了改这里的目录!
启动prootlinux:
1./startubuntu.sh出现了新的bash即为成功运行:
1234567[email protected]~>chmod+xstartubuntu.sh[email protected]~>./startubuntu.shgroups:cannotfindnameforgroupID3003groups:cannotfindnameforgroupID9997groups:cannotfindnameforgroupID20207groups:cannotfindnameforgroupID50207[email protected]:~#接下来的操作都将在prootlinux里进行,如果你退出了prootlinux,下次再启动startubuntu.sh脚本即可。
配置java环境和mirai&rhino环境这样在外部对应文件夹里创建文件就也会”同步到source文件夹了”
请将链接文件夹名称设为source。
在prootlinux中运行以下代码以配置一下dns并更新软件包至最新并安装javajdk11:
12345rm/etc/resolv.conftouch/etc/resolv.confecho-e"nameserver8.8.8.8 nameserver8.8.4.4">/etc/resolv.confaptupdate&&aptupgrade-yaptinstallopenjdk-11-jdkvimwget-y下载mirai-console-wrapper,mirai-api-http和rhino:
123456789101112wgethttps://github.com/mamoe/mirai-console-wrapper/releases/download/1.2.0/mirai-console-wrapper-1.2.0-all.jar-Omirai-console.jar#创建插件文件夹mkdirplugins&&cdpluginswgethttps://github.com/mamoe/mirai-api-http/releases/download/v1.7.0/mirai-api-http-v1.7.0.jar-Omirai-api-http-v1.7.0.jar#创建miraihttpapi配置文件mkdirMiraiAPIHTTPtouchMiraiAPIHTTP/setting.yml#写入配置echo-e"port:8080 authKey:stageguard">MiraiAPIHTTP/setting.ymlcd..#下载Rhinowgethttps://github.com/mozilla/rhino/releases/download/Rhino1_7_12_Release/rhino-1.7.12.jar-Orhino.jar注意最后一行中的port和authKey,它们分别指定了httpapi服务运行端口和验证密钥,如需要更改请自行更改。目前Mirai处于开发期,更新频率较快,如果有奇奇怪怪的bug请检查mirai-console-wrapper和mirai-api-http是否有更新。若更新也不能解决bug,请前往对应项目提交issue。
启动mirai-console-wrapper:
1java-jarmirai-console.jar首次启动会让你选择版本,我们选择pure版。选择后会下载miraicore,只需要等待即可。
注:若选错版本,请删除content文件夹后再重新启动。若出现Connectionclosedbypeer错误,请多试几次。
这样我们就成功启动了miraiconsole了。输入/loginqq号qq密码登录一个机器人。
登录成功,已经可以看到发送的消息了。
至此,环境配置告一段落,接下来的内容你得会点儿JavaScript才能看得懂。如果不懂JavaScript,你可以照葫芦画瓢。
编写定制化bot功能上一个prootlinux会话窗口保留挂miraiconsole,用startubuntu.sh脚本新开一个prootlinux。
新建一个js脚本,复制以下内容12345678910111213141516171819202122232425262728293031//导入MiraiQQBot库(function(http_get){eval(http_get("https://raw.githubusercontent.com/StageGuard/mirai-rhinojs-sdk/master/source/wrapper.js"));}((url)=>{varconnection=(newjava.net.URL(url)).openConnection(),bufferedReader,line,result="";connection.setDoInput(true);varbufferedReader=newjava.io.BufferedReader(newjava.io.InputStreamReader(connection.getInputStream()));while((line=bufferedReader.readLine())!=null)result+=(line+" ");bufferedReader.close();returnresult;}));//注册一些常量对象到全局对象Mirai.registerClasses2Object(scope);//httpapi服务器地址Mirai.setServer("http://localhost:8080/");//验证密钥Mirai.setAuthKey("stageguard");//创建新的botvarbot=Mirai.createNewBot(你的botqq号);//订阅bot消息bot.subscribe({//订阅群组消息group:(group,sender,message)=>{group.send(message);},friend:(sender,message)=>{if(message.get(POKE).getName()==SIXSIXSIX){sender.send(Poke(LIKE));}},});运行脚本1java-jarrhino.js-f脚本名称.js出现以下日志,即为运行成功
1234Botxxxxxxxxxxcreated.Verificationthreadstartedforxxxxxxxxxx.Messagesubscriptionthreadstartedforxxxxxxxxxx.Sessionisverified:xxxx现在,你的bot就是复读机了(
尝试对你的BOT发送戳一戳中的666。
这仅仅是基本功能,更多sdk方法请看SDK文档
谷歌安卓新logo公布:新机器人形象 取代机器人
谷歌在最新发布的《AndroidApp安全–始终保护》宣传视频中,揭晓了全新的安卓LOGO。新款LOGO字体进行了调整,把“Android”的首字母“A”改为了大写形式,然而并不突出于其他字母。此外,“n”和“r”字母的形态也有所变化,展现出更为滑圆的效果。在LOGO人物形象方面,那个熟悉的机器人logo也进行了创新化的设计,由平面变为立体,这一改变让其形象更加生动有趣。谷歌一般每四至五年会对安卓品牌标志进行一次更新。这次新颖的LOGO设计,可能会在所有的Android设备启动屏幕上出现,以前的标示“由Android提供支持”或许会随之更迭。
本文属于原创文章,如若转载,请注明来源:谷歌安卓新logo公布:新机器人形象取代机器人https://mobile.zol.com.cn/823/8238157.html
https://mobile.zol.com.cn/823/8238157.htmlmobile.zol.com.cntrue中关村在线https://mobile.zol.com.cn/823/8238157.htmlreport502谷歌在最新发布的《AndroidApp安全–始终保护》宣传视频中,揭晓了全新的安卓LOGO。新款LOGO字体进行了调整,把“Android”的首字母“A”改为了大写形式,然而并不突出于其他字母。此外,“n”和“r”字母的形态也有所变化,展现出更为滑圆的效果。在LOGO人物形象方...