qqbot是一个免费开源的基于smartqq的python插件,如果默认安装有pip,则可以直接在命令行下执行:pip install qqbot安装qqbot,安装成功后可以在命令行输入qqbot help查看帮助文档。如果直接输入qqbot会自动弹出一个二维码图片,用手机qq扫码即可启动成功,会自动保存本次的登陆信息到本地文件,下次可以输入qqbot -q qq号码启动,如果登陆信息没有过期就可以不用扫码登陆。qqbot启动后,可以再开一个终端来操作qqbot,输入:qq help|stop|restart,这三个命令分别是帮助文档,停机和重启。

下面实现自己的文字消息自动回复。qqbot提供了一个消息响应函数,我们只需要注册这个消息响应函数就可以收到qq消息了,这个消息响应函数的写法如下:

from qqbot importQQBotSlot as qqbotslot,RunBot

@qqbotslotdefonQQMessage(bot,contact,member,content):if content == '-hello':

bot.SendTo(contact,'你好')elif content=='-stop':

bot.SendTo(contact,'机器人已关闭')

bot.Stop()if __name__=='__main__':

RunBot()

注意这个消息响应函数名必须是onQQMessage,函数参数也必须一致。

写好消息响应函数后,保存为xx.py,如果qqbot已经启动请关闭qqbot进程,然后在命令行输入python xx.py -q qq号码,这样就可以启动qqbot,并且会把xx.py自动注册到qqbot的消息响应函数上,当qq收到消息时会在命令行上看到。还有一种运行xx.py的方式,就是把此文件当作一个插件,在qqbot运行过程中动态加载卸载。首先要将此文件保存在系统中可以import到的目录下,如python的安装目录下的Lib/site-packages目录,在qqbot启动后,在另外一个控制台输入qq plug xx就可以将onQQMessage函数注册到qqbot中去,输入qq unplugin xx。如果以插件形式加载xx.py,文件内容可以简化,只保留def onMessage函数,其他的都可以删除。

下面简单介绍传入onQQMessage的四个参数,bot是qqbot对象,提供了List/Send/Stop/Restart四个接口,List接口是一个查询接口,可以主动查询联系人列表等信息,具体详情还需查阅相关文档,本案例没用到这个接口,Send是一个发送消息的接口,Stop是停止qqbot的接口,Restart是重启qqbot的接口。contact是消息的发送者对象,member仅本消息是群或者讨论组的消息时才有效,代表发送消息的成员。content是一个str对象,消息的内容。

qqbot提供了几种发送二维码登陆验证的方法,分别有GUI模式,邮箱模式,服务器模式,文本模式。默认是GUI模式,当开启了其他模式时,GUI模式是关闭的。一般常用的是GUI和邮箱模式。在第一次启动qqbot后,在电脑系统盘里的用户目录C:Users个人电脑账号名(有可能是C:用户电脑的账号名)目录下会有一个.qqbot-tmp文件夹,在这个文件夹里,有一个v2.3.conf文件,这个文件就是登陆验证的配置文件,打开配置文件,里面有介绍配置的作用,可以自己复制一份somebody更改为自己想要的登陆模式,假设我复制了一份somebody添加在somebody后面,并命名为some,修改定制some的内容,下次启动时可以输入qqbot -u some或者python xx.py -u some启动qqbot。

下面给出个人实现的qq上收到’笑话’消息时自动回复一条笑话,笑话是上篇博文抓取存储的,从mysql数据库里获取笑话的python代码也在上篇博文。具体代码如下。

from qqbot importQQBotSlot as qqbotslot,RunBotimportmysql

@qqbotslotdefonQQMessage(bot,contact,member,content):if content == '笑话':

bot.SendTo(contact,mysql.get_one())elif content=='-stop':

bot.SendTo(contact,'机器人已关闭')

bot.Stop()if __name__=='__main__':

RunBot()

下面给出contact和member对象的简单说明。可以自己使用contact.__dict__获得对象的属性,注意,如果是一对一私聊则member对象将为NoneType。由于smartqq的限制,很多功能都缺失了,比如不能获取到真实的qq号。

contact对象__dict__大致如下:

#{'qq': '#NULL', 'uin': '3285709011', 'nick': 'mytest2', 'mark': '',#'name': 'mytest2', 'gcode': '3285709011', 'ctype': 'group'}

uin唯一标识,群聊天时标识群,一对一私聊时标识qq。nick是群名称,ctype说明本次消息是何种类型的,group表示是群,buddy表示是私聊。

member对象__dict__大致如下:

#{'qq': '#NULL', 'uin': '3012699167', 'nick': 'XX', 'mark': '#NULL',

# 'card': 'XXXX', 'name': 'XXXX', 'join_time': -1, 'last_speak_time': -1,

# 'role': '#NULL', 'role_id': -1, 'is_buddy': -1, 'level': -1, 'levelname': '#NULL',

# 'point': -1, 'ctype': 'group-member'}

当私聊时此对象为NoneType,uin唯一标识群成员,nick标识qq昵称,card表示群聊天里发消息的那个qq昵称备注。

其实通过onQQMessage我们已经可以做很多事情了,qqbot还提供了其他一些功能,可以参考百度相关资料得到。下一篇将介绍接入图灵机器人实现智能聊天。

python自动回复qq消息_基于python使用qqbot接入qq做一个简单的文字消息自动回复相关推荐

  1. python编程控制机器人_基于Python开发的微信图灵机器人

    在过去的几个月中,由于在新生群中回答问题费时费力,同时又有许多重复而又有固定答案的回答,我受到一些知乎文章的启发,维护了一个基于itchat的群聊机器人.从刚开始接入图灵机器人时只会尬聊的机器人,之后 ...

  2. python开发语音录入_基于python实现语音录入识别代码实例

    这篇文章主要介绍了如何通过python实现语音录入识别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.介绍 1.第一步录音存入本地 2.调用百度 ...

  3. python交互式数据可视化_基于Python实现交互式数据可视化的工具,你用过几种?...

    作者:Alark Joshi 翻译:陈雨琳 来源:数据派THU(ID:DatapiTHU) 我教授了一门关于数据可视化的数据科学硕士课程.我们的数据科学硕士项目是一个为期15个月的强化项目,这个项目已 ...

  4. autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术

    AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...

  5. python人脸识别库_基于Python的face_recognition库实现人脸识别

    Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...

  6. python多叉树遍历_基于Python的多叉树遍历算法

    [ 综直厘翹 S 赛理 ) 信息记录材料 2019 年 5 月第 20 卷第 5 期 基于 Python 的多叉树遍历算法 钱雨波 , 王金祥 ( 指导老师 ) ( 延边大学 吉林 延边 1 3300 ...

  7. python电影推荐算法_基于Python的电影推荐算法

    原标题:基于Python的电影推荐算法 第一步:收集和清洗数据 数据链接:https://grouplens.org/datasets/movielens/ 下载文件:ml-latest-small ...

  8. python兼职平台信号处理_基于Python的数字信号处理初步

    作者:许欢 来源:EETOP 行者无疆(论坛usrname:ICNO.1) 的博客 Python 是目前的热门语言,一直觉得掌握一门编程语言对作为搞技术的来说还是很有必要的,结合工作中能用到的一些数据 ...

  9. python深度神经网络量化_基于Python建立深度神经网络!你学会了嘛?

    原标题:基于Python建立深度神经网络!你学会了嘛? 图1 神经网络构造的例子(符号说明:上标[l]表示与第l层:上标(i)表示第i个例子:下标i表示矢量第i项) 单层神经网络 图2 单层神经网络示 ...

最新文章

  1. Web开发人员必读的12个网站
  2. Domino+Qucikplace+Sametime构建企业办公平台图文攻略(三)
  3. 本地搭建docker私服
  4. 我们为什么要尝试前后端分离
  5. dedephp geteditor(,cms教程:dedecms修改后台编辑器参数GetEditor的方法
  6. Swift - 本地消息的推送通知(附样例)
  7. 计算机一级单元格公式设置错误是什么原因,excel表格公式出错怎么解决,电子表格求和出错...
  8. svn is already under version control问题解决
  9. C# 客户端手动配置数据证书 WCF Certificate
  10. 操作系统课程设计之二级文件系统演示
  11. 红外图像动态范围压缩和对比度增强
  12. 互联网科普-什么是淘宝
  13. HTML5游戏引擎(十四)-颜色效果——混合模式 滤镜 颜色矩阵滤镜 矩阵数据说明
  14. 转:: 刺鸟:用python来开发webgame服务端(4)
  15. Unified diagnostic services (UDS)
  16. Shadowify 高级感投影photoshop/ps插件
  17. form-group 两种常用使用
  18. 页面相似度检测,对SEO起到什么作用?
  19. 阿里云 mysql参数_阿里云MYSQL数据库怎么修改参数值?
  20. 竟可打通了Python和Excel,还能自动生成代码,这个插件绝了

热门文章

  1. Android将网络url转换为base64
  2. 我叫MTonline主角紫卡升级技能出处一览
  3. 网络连接(三)集线器、交换机、路由器的功能和之间的异同,路由表和交换机中的表、为啥要地址转换、包过滤是啥?
  4. 温商机器人企业_两大温商企业集团实现“上市公司集群化”
  5. 【绝对干货】云虚拟主机网站无法访问的问题都在这里
  6. c语言坐标画直线函数,三、Windows图像处理—画点和线(直线)
  7. 中小公司的Java工程师应该如何逆袭冲进BAT?
  8. 对树莓派内存卡进行镜像备份.img
  9. 帝搜软件旗舰版控制台更新
  10. 学习自绘控件(mfc) 转(下)