由于腾讯停止了网页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模块相关推荐

  1. python os模块安装方法_基于python中pygame模块的Linux下安装过程(详解)

    一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查 ...

  2. 一个基于Python的tkinter模块实现的游戏活动日历模拟器

    一个基于Python的tkinter模块实现的游戏活动日历模拟器 1.Python环境准备 2.简单介绍 3.源代码 4.源代码及活动配置表下载 1.Python环境准备 运行该项目需要Python3 ...

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

    qqbot是一个免费开源的基于smartqq的python插件,如果默认安装有pip,则可以直接在命令行下执行:pip install qqbot安装qqbot,安装成功后可以在命令行输入qqbot ...

  4. 520最浪漫表白:QQ打开基于Python实现的无法拒绝的音乐表白代码!别让等待,成了遗憾!

    520表白日,男人怎么送礼物,就怎么爱你 每个女孩都喜欢男孩对自己浪漫的表白,不过每个人性格不同,浪漫表白的方式也不尽相同.那么520怎样浪漫的表白好呢?程序员如何俘获心仪女神的心呢?当然是要用程序员 ...

  5. 基于 Python 的 tkinter 模块制作的名人名言查询工具

    简介:本文主要介绍如何用 Python 内置的 tkinter 写一个查询工具. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...

  6. 机器人编程语言python-个人微信接入图灵机器人(基于Python)

    开发环境:Ubuntu14.04 编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号,创建机器人,如果只是学习的话,可以使用免费版,一个账号 ...

  7. python中select模块_基于python select.select模块通信的实例讲解 如何用python写个串口通信的程序...

    python socket怎么利用select实现双工通信 方法: Before : 0000000000000000000000000000000000000000 After pack: 0100 ...

  8. 基于python的Tkinter模块和Threading模块制作的用于班级/多人抽签的小程序

    程序思路: 先录入需要进行抽签的所有人的名字数据,然后进行随机打乱,显示随机打乱的结果在标签上,通过增加Threading模块控制抽签这个线程的进行与停止. 在本例中,我增加了当抽到之前已经抽到的人时 ...

  9. python图灵机器人微信号_个人微信接入图灵机器人(基于Python)

    开发环境:Ubuntu14.04 编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号,创建机器人,如果只是学习的话,可以使用免费版,一个账号 ...

最新文章

  1. Elasticsearch环境搭建
  2. linux debian ntp,Debian下面的ntp服务(ntpdate)的安装
  3. Kubernetes StatefulSet源码分析
  4. JZOJ 4366. 【GDKOI2016】项链
  5. 基于FPGA的电机控制设计(PWM)
  6. 十款移动APP开发框架
  7. 计算机硬盘检测和修复工具,教你怎么使用硬盘检测修复工具教程
  8. 图新地球 “请选择目标图层后再下载”
  9. 快速傅里叶变换(FFT)的原理及公式
  10. Windows服务没有及时响应启动或控制请求1053
  11. 若依源码分析(6)——部门管理
  12. 【无标题】PMP强化练习正确题一
  13. linux根分区和home分区如何合并,【已解决】我想调整根分区和home的大小
  14. Intellij IDEA 安装和配置热部署插件JRebel进行项目的热部署
  15. 梦想在此起航,定要全力以赴。
  16. 【历史上的今天】4 月 7 日:IBM System/360 问世;以太网的发明者诞生;第一个 RFC 文档发布
  17. 《go程序语言设计》引言
  18. springboot 接受数组对象
  19. 传奇私服最稳定的服务器,传奇选择什么样的服务器才能保证自己服的一个稳定...
  20. Shell自动化管理账号脚本

热门文章

  1. Py之h5py:Python库之h5py库的简介、安装、使用方法详细攻略
  2. vue3 kepp-alive 的使用
  3. u盘数据恢复,教你轻松搞定!
  4. 4g全网通SMD贴片内置天线怎么选择?
  5. Box2D翻译_第二章
  6. 爬取斗鱼直播平台的所有房间信息
  7. 【XGBoost】第 7 章:使用 XGBoost 发现系外行星
  8. sh_10_嵌套打印小星星
  9. 什么是Bom,常用的bom属性又有哪些?
  10. Tower of Hanoi(汉诺塔)详解