酷Q机器人部署过程记录

酷Q机器人部署过程记录

  • 终终终于快要完工了,AWSL,这里记录一下整个过程(以及所有踩过的坑)

源自于Comet OJ群一位大佬自制的群机器人,能自动查询各类算法竞赛平台的比赛时间,还能提醒你,于是产生了兴趣,前去求学。然后大佬二话不说 抛给我一个知乎链接:小明机器人来了,于是踏上造机器人的征途。。。

这里我整理了一下,想自己搭一个这样的机器人,那么你需要掌握以下

前置姿势:

  • Python基本语法+特性(闭包、装饰器、面向对象 等)
  • Python异步IO(协程的实现)
  • 基本的Python爬虫知识(简单的单线程爬虫即可),包括requests库的使用,以及熟悉至少一种网页解析库(re、bs4、xpath 等)
  • 最基础的code ability(一些简单计算和逻辑的实现)

  • 会看官方文档的能力

对,就这么简单(会一点点python+一点点爬虫就可以搞了)


按照顺序来,第一部开始学Nonebot,打开官方文档,直接搞起:

可以看到他的原理(基于Python异步IO+酷Q+CQHTTP插件 反向WebSocket通信)

m1

  • 第一步:安装NoneBot

首先保证自己的python版本不低于3.7,然后pip install nonebot一步到位

然后你可能会崩掉(特别是在服务器上安装的时候),所以先提前把一些常用库安装好吧

  • 第二步 安装库Q和插件

酷Q版本发布,Air免费,Pro要捐钱给开发者(还蛮贵的),Pro能发图片!(可惜我没有)

到这里,其实你完全可以去应用发布专栏找别人开发好的插件拿来直接用,但是这就违背了我学技术的初心,于是果断(下载几个好玩的插件先玩起来)去学技术

  • 第三步 下载CQHTTP插件

这里按照要求下载插件,然后就没了,万事俱备只欠东风了

PS:如果插件不能用了,可能是没更新,去看看新版本吧


然后跟着教程来,我的github就有了mybot这个repo

github: b4158813/mybot

里面大部分配置都是我自己写的爬虫代码和异步交互代码,到现在,花了几天时间完成了以下功能:

返回学校VPN网址、爬取学校新闻、爬取教务处新闻、从用户获取搜索关键字并搜索B站视频、爬取B站日榜、爬取欧拉计划题目、爬取百度百科/维基百科词条内容、通知个人定时打卡(个人的信息存储在json格式文件中)

其实都是些不需要动脑子的活啦~,爬虫几乎都是用requests+XPath搞的(没有用到Selenium模仿电脑操作以及验证码识别这种稍微高级一点的实现,毕竟学校这种网站也没什么反爬虫措施QAQ,噢是我太菜了)

(目前已经得到辅导员认可,已经投入年级群使用,hiahiahia~~)

当然这里要感谢的还是那位神秘的大佬,给我提供了这么好的学习资源


此后,我又尝试过购买阿里云的服务器(Windows 2012 server)来实现服务器部署机器人,因为这样就不需要我的电脑24小时都开着啦,然而我快要成功了,但是还是没成功,BUG很严重,机器人甚至不会理你,而且服务器太卡了,我不知道是不是我的问题,这几天在研究研究,争取搞定它,一劳永逸啊!

  • 2020.4.24 更新

暂时不搞云服务器了(阿里云的windows服务器为什么这么卡),就把自己的TP X230 作为服务器吧,不想再折腾了。。。

  • 2020.4.25 更新

今天上午出了点小bug,因为我发现大佬的repo提供的代码居然是这样的:

1
2
3
4
5
6
7
# 这种垃圾代码拿出来误人子弟
try:
for it in ID:
await bot.send_private_msg(user_id=it, message=text)
except CQHttpError:
# 您这么写?只要一个号码出错 后面的正确的号码不就也通知不到了吗????
pass

于是果断改进为下面这种:

1
2
3
4
5
for it in ID:
try:
await bot.send_private_msg(user_id=it, message=text)
except: # 一个出错没事,下一个可以接着来
pass

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!