QQ机器人——基于python以及qqbot模块
由于腾讯停止了网页qq的支持,qqsmart协议不再有效,qqbot也无法运行,作者也停止维护,大家可以使用coolq或者自己研究基于安卓协议的qq机器人
一.介绍
首先放上qqbot模块的github地址:https://github.com/pandolia/qqbot
qqbot模块是基于smartqq协议的,用python完成的模块
本文主要提供qq机器人的实现,以及引入图灵机器人,对于qqbot模块的安装以及基本应用不做说明。
二.开始配置(以下内容来自开发文档)
实现自己的 QQ 机器人非常简单,只需要定义一个自己的消息响应函数并按插件加载。示例代码:
# -*- coding: utf-8 -*-def onQQMessage(bot, contact, member, content):if content == '-hello':bot.SendTo(contact, '你好,我是QQ机器人')elif content == '-stop':bot.SendTo(contact, 'QQ机器人已关闭')bot.Stop()
注意,上面注册的响应函数的函数名必须为 “onQQMessage” ,函数参数也必须和上面的一致。
将以上代码另存为 sample.py (注意保存为 utf8 编码的文件)。放到 ~/.qqbot-tmp/plugins/ 目录下( ~ 代表用户主目录, win7 下为 C:\Users\xxx ),或系统中可以 import 到的目录下(如 python 的安装目录下的 Lib/site-packages 目录)。
之后,保持前面的 qqbot 进程运行,在另一个控制台输入 qq plug sample ,则可将此文件中的 onQQMessage 函数注册到 QQBot 的相应事件上去。此时,用另外一个 QQ 向本 QQ 发送消息 “-hello”,则会自动回复 “你好,我是 QQ 机器人”,发送消息 “-stop” 则会关闭 QQ 机器人。
在控制台输入 qq unplug sample 可以卸载此插件及相应的回调函数。可以同时加载多个插件,此时各插件中的相应函数会依次被调用(但调用顺序和加载次序无关)。
QQBot 开始运行后,每收到一条 QQ 消息,会将消息来源、消息内容以及一个 QQBot 对象传递给已注册的消息响应函数。其中:
bot : QQBot 对象,提供 List/SendTo/Stop/Restart 等接口,详见本文档第五节
contact : QContact 对象,消息的发送者,具有 ctype/qq/uin/nick/mark/card/name 等属性
member : QContact 对象,仅当本消息为 群消息或讨论组消息 时有效,代表实际发消息的成员
content : str 对象,消息内容
contact 代表消息发送者,其 ctype 属性可以为 buddy
/group
/discuss
,代表 好友/群/讨论组 对象,表示本消息是 好友消息/群消息/讨论组消息 。
member 仅当本消息为 群消息或讨论组消息 时有效,代表实际发消息的成员,它的 ctype 属性可以为 group-member
/discuss-member
,代表 群成员/讨论组成员 对象。当本消息为 好友消息 时, member 等于 None 。
contact 和 member 都是 QContact 对象,不同类型的 QContact 对象所具有的属性含义见: qcontact-attr 。注意所有 QContact 对象都是 只读对象 ,只能读取它的属性,不能设置它的属性,也不能向它添加额外的属性。
可以调用 QQBot 对象的 SendTo 接口向 QContact 对象发送消息,但要注意:只可以向 好友/群/讨论组 发消息, 不可以向 群成员/讨论组成员 发送消息 。也就是说,只可以调用 bot.SendTo(contact, 'xxx') , 不可以调用 bot.SendTo(member, 'xxx') 。
三.升级机器人
1.我们可以按照上述范例添加回复,比如:
if content == 'hello':bot.SendTo(contact, 'hello')
2.或者针对某个对象:
if contact.name == "xxx":bot.SendTo(contact, 'hello')
3.同理,可以讲上述两种情况合并,利用and语句实现特定角色特定语句特定回复
4.设置一个时间阈值,用来确保机器人不会一直被触发,从而实现每间隔多少市场才可以触发
这儿利用的是一个非常低效的方法,即记录当前时间并写入
# 打开文件,获取上次记录时间time_value = 60with open(file) as t1:last_time = float(t1.read())# 用当前时间减去记录时间得出间隔时间interval_time = time.time() - last_timeif bot.isMe(contact, member):print('自己人,别开枪')else:# 如果间隔时间超过阈值则输出,没超过则不进行操作if content == '你好' and interval_time > time_value:bot.SendTo(contact, '你好')with open(file, "w") as t2:t2.write(str(time.time()))
此处将时间写入txt文件中储存,并调用了bot.isMe方法来确认是否是机器人自己说的话
5.接入图灵机器人,至于如何开通图灵机器人并设置在此就不赘述了
def tuling(infomation):url_api = "http://www.tuling123.com/openapi/api"data = {'key': '你的机器人的key','info': infomation,}m = requests.post(url_api, data=data).json()if m.get('code') == 100000:return m.get('text')
其中字典中key的内容用你配置好的图灵机器人的apikey,information则是你传进去的content
切记此处的url_api,我使用的是api1,现在图灵机器人推出了api2,但是它传输的数据很多,就放弃了api2
QQ机器人——基于python以及qqbot模块相关推荐
- python os模块安装方法_基于python中pygame模块的Linux下安装过程(详解)
一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查 ...
- 一个基于Python的tkinter模块实现的游戏活动日历模拟器
一个基于Python的tkinter模块实现的游戏活动日历模拟器 1.Python环境准备 2.简单介绍 3.源代码 4.源代码及活动配置表下载 1.Python环境准备 运行该项目需要Python3 ...
- python自动回复qq消息_基于python使用qqbot接入qq做一个简单的文字消息自动回复
qqbot是一个免费开源的基于smartqq的python插件,如果默认安装有pip,则可以直接在命令行下执行:pip install qqbot安装qqbot,安装成功后可以在命令行输入qqbot ...
- 520最浪漫表白:QQ打开基于Python实现的无法拒绝的音乐表白代码!别让等待,成了遗憾!
520表白日,男人怎么送礼物,就怎么爱你 每个女孩都喜欢男孩对自己浪漫的表白,不过每个人性格不同,浪漫表白的方式也不尽相同.那么520怎样浪漫的表白好呢?程序员如何俘获心仪女神的心呢?当然是要用程序员 ...
- 基于 Python 的 tkinter 模块制作的名人名言查询工具
简介:本文主要介绍如何用 Python 内置的 tkinter 写一个查询工具. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...
- 机器人编程语言python-个人微信接入图灵机器人(基于Python)
开发环境:Ubuntu14.04 编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号,创建机器人,如果只是学习的话,可以使用免费版,一个账号 ...
- python中select模块_基于python select.select模块通信的实例讲解 如何用python写个串口通信的程序...
python socket怎么利用select实现双工通信 方法: Before : 0000000000000000000000000000000000000000 After pack: 0100 ...
- 基于python的Tkinter模块和Threading模块制作的用于班级/多人抽签的小程序
程序思路: 先录入需要进行抽签的所有人的名字数据,然后进行随机打乱,显示随机打乱的结果在标签上,通过增加Threading模块控制抽签这个线程的进行与停止. 在本例中,我增加了当抽到之前已经抽到的人时 ...
- python图灵机器人微信号_个人微信接入图灵机器人(基于Python)
开发环境:Ubuntu14.04 编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号,创建机器人,如果只是学习的话,可以使用免费版,一个账号 ...
最新文章
- Elasticsearch环境搭建
- linux debian ntp,Debian下面的ntp服务(ntpdate)的安装
- Kubernetes StatefulSet源码分析
- JZOJ 4366. 【GDKOI2016】项链
- 基于FPGA的电机控制设计(PWM)
- 十款移动APP开发框架
- 计算机硬盘检测和修复工具,教你怎么使用硬盘检测修复工具教程
- 图新地球 “请选择目标图层后再下载”
- 快速傅里叶变换(FFT)的原理及公式
- Windows服务没有及时响应启动或控制请求1053
- 若依源码分析(6)——部门管理
- 【无标题】PMP强化练习正确题一
- linux根分区和home分区如何合并,【已解决】我想调整根分区和home的大小
- Intellij IDEA 安装和配置热部署插件JRebel进行项目的热部署
- 梦想在此起航,定要全力以赴。
- 【历史上的今天】4 月 7 日:IBM System/360 问世;以太网的发明者诞生;第一个 RFC 文档发布
- 《go程序语言设计》引言
- springboot 接受数组对象
- 传奇私服最稳定的服务器,传奇选择什么样的服务器才能保证自己服的一个稳定...
- Shell自动化管理账号脚本