用QQ的人很多,QQ机器人很有趣。
如果能利用QQ机器人,把用户引到网站上,那更好了!
CQHTTP这个插件,文档写的很好,如果要写机器人处理程序,可以试试它。
原理是监听消息,然后上报到一个地址,你需要自己写一个处理程序,监听这个地址,收消息。
根据消息的不同,处理程序作出不同的反应。
CQHTTP是插件,你写的处理程序不是。
一、有API比没有更好
⒈机器人上报指令给处理程序,程序对API发起请求即可。
⒉如果不用API,处理程序就要自己操作数据库了。
假如开发处理程序的人和开发网站的不是同一人,或者用的也不是同一种编程语言。
你需要知道网站程序是怎么操作数据库的,自己也得那样操作。这就麻烦多了。
⒊因为只对API接口进行请求,可以无视编程语言的区别。也不必知道API是怎么操作数据库的。
二、功能流程
以“签到”功能来说。
⒈此时你在QQ群里发了条消息(指令),如“#签到”,机器人收到了你的消息(指令)。
⒉机器人上报指令给处理程序(这个程序要自己写)。
⒊处理程序知道你要签到,于是向地址:“www.example.com/actions/sign”发起POST请求。
⒋API端收到这个请求,验证用户信息,然后操作数据库,返回消息。
⒌处理程序收到API返回的消息,再将它和其他东西组合起来,返回到QQ群里。
三、用户验证
如果是登录网站,API端已经写好认证了。
那么对QQ机器人发指令,API端怎么认证?
㈠思考如下:
⒈用户肯定要在网站上绑定自己的QQ号,把用户名(用户ID)和QQ号绑定到一起,这样才知道谁是谁。
⒉在网站登录,会生成session信息,用这样标识用户。若是用QQ发指令,不必再弄个session验证。
因为可以确定QQ号是用户本人在用(盗号就不管了)。
当然还有一种选择,就是用QQ发指令,假装是用QQ登录,也给用户一个session信息。
⒊如果不用session,在“验证中间件”里加个判断:如果是QQ机器人指令,就算通过验证。同时要在请求头里加个标识,标识自己是QQ机器人指令。
⒋如果用session,就要向"/login"路由发起POST请求,生成一个session,处理程序那边要记录session信息。然后再发送“签到”请求。
⒌我选择不用session,默认用户不会被盗QQ号。这样比较好写,也能省点流量。
㈡过程如下:
⒈在网站个人资料里绑定自己的QQ号,也就是用来发指令的QQ号,这样在数据库里有了相关记录。
⒉向QQ机器人发一条指令,机器人把指令传给你的处理程序,处理程序向API发起请求。
⒊验证中间件查看请求头,发现是利用QQ机器人发送的指令,于是验证是否在网站上绑定了,通过则继续。
四、利用QQ机器人,能在网站上做什么?
能做很多,而且可以加些限制,比如只有会员才能这样那样,或者等级达到多少级才能这样那样......
“签到”只是一个例子,除此之外,还有:
⒈“商品交易”(如果网站有商城)
⒉随机换一个自己在网站的个人头像(指令“#头像”,机器人帮你在图库里随便找一个换上去)
⒊查询文章元信息(发布时间、修改时间、阅读量、收藏量、举报量、评论数量、喜欢和反对的数量等。)
⒋网站排名及其他信息(网管理员可用,本质是向某些网站请求数据,然后返回)
⒌本人信息(多少人关注我,我关注了多少人,我关注了谁,谁关注了我,我举报了谁,谁举报了我等等。)
⒍转送金币、积分、验证(如果能转的话)
⒎一些简单的命令,如“#生成卡密 100”,“#清理缓存”,“#全站通知 空一格之后就是全站通知的内容”等等。
⒏待补充......
五、总结
每天一水,圆满完成!