python开发酷q插件gui_Python酷Q应用开发

用Python开发酷Q机器人应用

前言酷Q机器人应用一般都是用易语言开发的,但是一方面不想再多学一门易语言,另一方面开发脚本还是用Python比较舒服。关于Python的酷Q的SDK我在论坛找了一下,目前用的比较多的有两个(现在应该是三个了,见文末),一个是基于http的none-bot,功能更强大,但上手有一定难度,所以最简单的我觉得还是慕晓飞大大的

本站更多关于酷Q的文章:点我

环境配置

首先需要按照文档的说明配置开发环境,这点文档讲的很详细,就不赘述了,需要注意的是:酷Q本身是32位程序,开发时只支持32位的Python。

还有一点就是app_id应该按照官方规范来,否则可能会出问题,

酷Q升级后开发环境的目录移动至酷Q的dev目录下,如果酷Q没有自动更正的话请手动更正。更正方法为,在dev目录下新建cn.muxiaofei.coolq_sdk_x文件夹,将原来的cn.muxiaofei.coolq_sdk_x.dll和cn.muxiaofei.coolq_sdk_x.json重命名为app.dll和app.json移动至新建的文件夹下,其他不变。

配置完环境,如果不出意外的话,应该就能在酷Q日志的DEBUG里看到输出的hello world。

编写程序接下来就是敲自己的代码了,这个SDK的所有事件处理和API调用都在CQPlusHandler.py文件的 MainHandler类中进行编写,关于事件和参数的说明在开发文档中都有说明,API可以通过输入self.api的代码提示进行查看,也可以转到一个_api.py的文件中查看,至于这些API函数和参数的意义基本上看名字就能猜到八九分了,具体使用方法需要自己去尝试。

新手需要注意的是这个CQPlusHandler.py程序是由酷Q软件自动执行的,不需要在Python的IDE里点运行,当然你点了也没用,如果setting里的DEBUG参数你没改的话,只要修改代码并保存,修改的代码就会实时生效。

然后需要说明的就是@和表情,这个需要使用CQ码,

举个例子,在CQPlusHandler.py文件中写入以下代码就能实现在群聊里复读并@发言的人的功能:# -*- coding:utf-8 -*-

import cqplus

class MainHandler(cqplus.CQPlusHandler):

def handle_event(self, event, params):

if event == "on_group_msg":

msg = '[CQ:at,qq=' + str(params['from_qq']) + ']' + params['msg']

self.api.send_group_msg(params['from_group'], msg)

案例然后下面是我根据需求给群友写的一个自助Roll游戏的插件,和论坛上我能找到的抽奖插件相比,这个插件的特点在于完全由qq消息进行命令,可以直接丢到服务器上就不用管了,另一个特点是可以同时进行多个Roll游戏活动而互不干扰,以下是一个使用案例。这个应用其实还有一些功能我想过但还没加进去,以后根据需要有时间再看看吧,我把我写的垃圾代码放在了GitHub上,希望可以给有需要的人一点有价值的参考:

python开发酷q插件gui_Python酷Q应用开发_第1张图片

已知问题

打包最后就是应用的打包,直接使用打包生成的cpk文件会报错,需要像开发应用一样配置好环境并把源程序也放进去,唯一的差别就在于可以不用进入酷Q的开发者模式,所以要丢到服务器上的话,还有一丢丢的麻烦。由于Python的SDK的特性,编写的插件就不能像论坛上别的插件一样只发布cpk文件即可,而且使用者还需配置环境,对于普通用户来说过于麻烦了,所以这个还是只适合开发者自己使用。

消息并发处理由于Python的GLI锁机制,本插件不支持并发处理。表现为有事件发生时,比如各种消息和定时器事件,插件便会调用一次CQPlusHandler.py进行事件处理,所以当上一次事件还未处理完时,下一个事件又紧接着发,这时便会发生内存报错。虽然报错了程序并不会崩溃,不过如果程序要处理网络请求一类的耗时任务,这个缺陷是致命的。要想避免这种报错,只在CQPlusHandler.py文件里下功夫(比如用多线程)应该是不行的,估计得从源码上想想办法才行。不过我的机器人不需要处理大量消息,消息处理的也很快,所以凑合用用也还行。

后来有大神重新写了个支持并发的

你可能感兴趣的:(python开发酷q插件gui)