python qq机器人 2019_QQ机器人开发

本文介绍了一位大学生利用Python SDK开发QQ机器人的经历,包括选择Python的原因、环境配置、SDK运行原理和信息登记系统的实现。通过示例代码分享了信息处理、判断、存储和更新的逻辑,并提到定时信息播报功能。作者希望得到社区的反馈和建议,共同优化程序。
摘要由CSDN通过智能技术生成

前言:笔者是一名大学生,假期闲着无聊研究了一下QQ机器人,需求是开发一个机器人登记系统,采用一个机器人+网站的模式,截止到发表机器人已经开发差不多,网站还要研究一段时间,总的来说QQ机器人的SDK是比较简单的,之前因为qqweb协议禁止导致qqbot不能用了,此机器人是基于QQsmart协议的。

一、 开发工具选择及环境配置

工具选择

吹爆我的python,这玩意火不是空穴来风的,是真的对新手很友好,登记系统完全可以用sdk-x(QQ机器人开发的SDK,python编写)+Django+pyMySQL全程编写,啥不会去import一个是真的简单。我选择的IDE是pycharm,代码记不住都有提示,对新手也十分友好。

环境配置

QQ机器人环境配置的传送门:https://gitee.com/muxiaofei/coolq_sdk_x/wikis/pages

注意:配置完能好好用的都在少数,一般会出现千奇百怪的问题。

1、 酷q问你是否要迁移,一定要是,然后开发还是在APP文件里面开发,关于迁移原因官方有声明,可以去官网搜一下。

2、 应用程序异常退出和RPC调用失败的问题,都可以用慕晓飞大大文档里面的那个常见问题来解决。

3、 关于应用改名问题,文件夹改名问题慕晓飞大大文档里面说明了,改名格式问题官方给出了格式规范,总之不要自己随心所欲乱改。

官方传送门:https://d.cqp.me/Pro/%E5%BC%80%E5%8F%91

4、 先假装有一个第四,想起来再加

一、 SDK运行原理(我猜的,可能不准)

大家肯定已经开始在CQPlusHandler.py文件里面开始了编程,点了一下运行发现缺少_CQ***,emmm这个不是这样用的。

消息每发出一次,CQPlusHandler.py文件就会调用一次,处理完成程序自动关闭,程序主要需要CQPlusHandler.py里面那个Mainhandler类,进行判断和处理,直接运行一个类python当然会感觉莫名其妙,其实里面的代码如果你Ctrl+s保存之后内容是实时生效的,不需要你去点运行,正确的姿势应该是直接发信息进行实际测试或者调用酷q自带的日志功能去测试,这的确有点反人类。

二、 信息登记系统的实例代码

当然学习一个没有详细说明SDK最快的方法就是看看别人怎么写喽。我就是这么干的,看了别人代码之后,醍醐灌顶。

下面是我开发的信息登记机器人1.0.0版本,没有对接数据库,信息存储利用的是文件,不过基本的登记信息,修改信息,定时信息播报已经实现了。信息登记

信息播报

就像那样。

代码如何书写呢?

首先我们要自动判断事件,发消息是来自群还是来自私聊,因为最后发送消息群和私聊的发送方式也是不同的。然后开始切割消息,毕竟要转化为python能够识别的消息而且还要有规律的存储,必须对消息进行处理,然后要求输入者遵循一定的格式,还不能太麻烦,我思前想后,觉得利用空格做分割符,然后利用字典对信息进行存放,这样方便输入者进行输入,而且还不必拘泥于信息的顺序,我也方便进行处理,于是就有了以下代码:

消息判断和信息处理

信息进行处理后,首先进行判断第一个信息段是信息登记,还是信息修改再进行相应的操作,如果都不是就不必进行操作了。

if get_msg[0]=='信息登记':

然后就是信息登记模块了,首先把输入的信息存储到字典中,再对疯狂的用户输入了什么进行判断,因为你永远想不到用户会干嘛,输入的格式不规范,信息段缺少,信息段有错别字,都要考虑到,这让我想起来一个段子,讲的就是程序员对于用户的输入。

一个客人进了酒吧要了一瓶啤酒(emmm正常的)

一个客人进了酒吧要了一杯白开水(也是可以接受的)

一个客人进了酒吧要了一个啤酒塞子(what?)

一个客人进了酒吧从窗户跳了出去(23333)

一个客人进了酒吧钻到了桌子底下(O(∩_∩)O哈哈~)

一个客人进了酒吧要了一杯……&¥*……¥……¥

一个客人进了酒吧把酒店老板打了一顿

反正用户操作永远匪夷所思,我的程序也没有经过大规模测试,看看我是怎么解决的吧。信息判断和信息回复

注意后面那个表情的CQ码(有一些表情,@别人要用专用的官方书写方式,官方传送门:https://d.cqp.me/Pro/%E5%BC%80%E5%8F%91里面有),我也是借鉴别人这样输入的,否则双重“”会引起问题(不知道为什么),还有那个try-finally的错误异常处理,也是借鉴的别人,原来python自带这个东西,要是不借鉴别人,我还不知道写出什么鬼东西来。

下面就是信息更改模块了,和上面的差不多信息更改模块

我主要借鉴点是那个数据修改模块,让我想的话果断是想不到的,我想不到竟然可以用两个文件,另一个文件写完了复制到主文件就可以了,思路新奇,用文件操作实现了修改。

最后是定时发送信息模块信息播报模块

首先判断定时器事件,再判断定时器名称,定时器配置慕晓飞大大文件里面写了,然后读取定时器状态信息,那个文件是我自己创建的按照自己写好的格式读取就可以了

三、 结语

本文章所有代码已经在酷q社区公开(可惜没人看)传送门:https://cqp.cc/t/44240

写这篇文章目前还是想引导新手和请求大神指点,因为这些代码都只是我觉得逻辑上这么写,我就这样写了,至于是否有更简便的方法,我不知道(比如那个try-finally,如果没看别人的,可能就按照逻辑写出一大堆代码了),希望大神能给出建议,优化我的程序,添加更多内容,万分感谢。希望我们共同进步。

附:

酷q pythonSDK技术交流群:575465519  里面的小伙伴都很不错,有问题都会解答的

参考的一位up主:https://www.bilibili.com/read/cv2876550 这位up主很厉害,给他点个赞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值