原理:

  通过Python3的qqBot开源库,基于腾讯的smartQQ协议登录个人QQ,实现监控、收集QQ消息,进而通过图灵机器人API接入方式实现自动聊天。


零、前期准备:

  1、Python3

  2、qqBot & requests & re

  3、申请图灵机器人



一、安装Python3的3个库:

  Windows下打开cmd命令提示符,进入python,尝试import导入一下库。若均已安装,则显示如下:

 Microsoft Windows [版本 10.0.17134.407]
(c) Microsoft Corporation。保留所有权利。 C:\Users\>python
Python 3.7. (v3.7.0:1bf9cc5093, Jun , ::) [MSC v. bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import qqbot
>>> import requests
>>> import re
>>>

  

  若未安装,则可直接输入pip安装

C:\Users\>pip install qqbot
...
C:\Users\>pip install requests
...
C:\Users\>pip install re
...

二、关于qqBot:

  若成功安装qqBot后,安装路径应该在Python安装路径的 \Lib\site-packages\qqbot 里

  此时进入qqbot下的 plugins 子目录下,并直接修改 sample.py 插件文件

  原始sample.py插件内容如下:

 # -*- coding: utf-8 -*-

 # 插件加载方法:
# 先运行 qqbot ,启动成功后,在另一个命令行窗口输入: qq plug qqbot.plugins.sample def onQQMessage(bot, contact, member, content):
if content == '-hello':
bot.SendTo(contact, '你好,我是QQ机器人')
elif content == '-stop':
bot.SendTo(contact, 'QQ机器人已关闭')
bot.Stop()

  可以容易得知,contact参数代表联系人(qq好友、群、临时会话),content代表接受的消息内容。

  他们的实际意义如下:

 bot     : QQBot   对象,提供 List/SendTo/Stop/Restart 等接口,详见本文档第五节
contact : QContact 对象,消息的发送者,具有 ctype/qq/uin/nick/mark/card/name 等属性
member : QContact 对象,仅当本消息为“群消息”或“讨论组消息”时有效,代表实际发消息的成员(群成员)
content : str    对象,接受的消息内容

  若想详细了解可参考Github源码地址:https://github.com/pandolia/qqbot

  由此,我们可以知道,我们只需对str对象类型的 content 参数进行处理,并把结果通过调用 bot.SendTo(contact, "要回复内容") 即可

三、关于图灵机器人及调用的API:

  首先是接入说明(详细说明:https://www.kancloud.cn/turing/www-tuling123-com/718227):

    -->API V2.0是基于图灵机器人平台语义理解、深度学习等核心技术,为广大开发者和企业提供的在线服务和开发接口。

    -->编码方式  UTF-8(调用图灵API的各个环节的编码方式均为UTF-8)

    -->接口地址  http://openapi.tuling123.com/openapi/api/v2

    -->请求方式  HTTP POST

    -->请求参数  请求参数格式为 json

  

  也就是说,我们只需把上一步的 content 内容写到指定位置的 json 里,然后把发到接口地址,再从响应的内容里提取所要的回复内容即可。

四、代码实现:

  以下即为sample.py文件内容:

# -*- coding: utf-8 -*-
import json
import requests
import re
# 插件加载方法:
# 先在命令行运行 qqbot ,
# 启动成功后,在另一个命令行窗口输入: qq plug qqbot.plugins.sample
def answerMessage(ask_message):
url = 'http://openapi.tuling123.com/openapi/api/v2'
body = {
"reqType":0,
"perception": {
"inputText": {
"text": ""
}
},
"userInfo": {
"apiKey": "此处填机器人的APIKey(32位16进制数字)",
"userId": "此处填图灵机器人的用户名(六位数字)"
}
}
body['perception']['inputText']['text'] = ask_message
data = json.dumps(body) response = requests.post(url, data = data)
retext = response.text answ_text = re.findall((re.compile('{.*?results":.*?values.*?text":"(.*?)"}', re.S)), retext)
text = str(answ_text[0])
try:
answ_shows = re.findall((re.compile('{.*?showtext":"(.*?)",', re.S)), retext)
return str(answ_shows[0])
except IndexError:
answ_names = re.findall((re.compile('{.*?name":"(.*?)",', re.S)), retext)
answ_urls = re.findall((re.compile('{.*?detailurl":"(.*?)"}', re.S)), retext)
try:
for index in range(3):
text = text+"\n原标题"+str(index+1)+":"+str(answ_names[index])+"\n链接地址:"+str(answ_urls[index])
return (text)
except IndexError:
return (str(answ_text[0])) def onQQMessage(bot, contact, member, content):
answer = answerMessage(content)
bot.SendTo(contact, answer)
这里我有对新闻资讯和查询天气做了处理,中间有几个异常处理,想简单的话可分析下API说明,不用这么多也行的。

五、启动方式
  首先启动qqbot:

  
  这是不出意外的话会弹出照片窗口,扫描二维码即可登录;
  若长时间不弹出二维码,请自行找到地址(如上图,我的是:C:\Users\20173\.qqbot-tmp\plugins),手动打开并扫描登陆。
  成功后继续显示如下:

  其次加载sample.py插件:
  再打开一个终端(上买启动那个不要关闭),输入:qq plug qqbot.plugins.sample



拓展:有兴趣可研究下.json文件用处及用法,还有re,requests等。
  另外这里也可对此机器人回复内容等进行进一步的探索和拓展。


***每天进步一点点***
===感激并前行着===

python3+qqBot+图灵机器人实现qq聊天机器人的更多相关文章

  1. QQ 聊天机器人小薇 2.1.0 发布!

    本次发布加入了支持茉莉机器人,并且更容易搭建开发环境,在线显示登录二维码~ 简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动: 监听多个 QQ 群消息 ...

  2. QQ 聊天机器人小薇 2.0.0 发布!

    本次发布主要加入了支持讨论组聊天,并增强了稳定性.另外,官方小薇 QQ 机器人已经下线,大家要体验的话请 自建私服~ 简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务, ...

  3. QQ 聊天机器人小薇 1.0.1 发布!

    本次发布主要解决了消息丢失(Api返回码[1202])问题,并改进了改进了一些细节. 简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动: 监听多个 Q ...

  4. QQ 聊天机器人小薇发布!

    简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动: 监听多个 QQ 群消息,发现有"感兴趣"的内容时通过图灵机器人进行智能回复 监 ...

  5. QQ 聊天机器人API

    QQ机器人是腾讯陆续推出的的人工智能聊天机器人的总称. 都说小Q妹妹聪明好学,我们能够教她说话.也能够请他帮忙查询邮编.手机号,或者解释成语.翻译成语,据说她还会查询手机号码归属地.应用科学计算器. ...

  6. QQ聊天机器人 Delphi代码

    QQ聊天机器人     前几日,看到杂志上有一篇关于开发QQ聊天机器人的文章.谈到了对QQ循环发送消息内容,感觉倒也很好玩,于是拿起Delphi开始了我的QQ聊天机器人之路. 首先要明白自己要做什么, ...

  7. 使用图灵机器人API实现聊天机器人

    使用图灵机器人的API需要先注册,获取key才行,这我就不说了,自己到http://www.tuling123.com/注册一个账号即可. 下面就是一个简单的python调用API实现聊天机器人的简易 ...

  8. QQ聊天机器人for PHP版 (登录,收、发消息)

    <?php include "http_no_cookie.class.php"; class qq { public $sid; public $http; public ...

  9. AI中台——智能聊天机器人平台的架构与应用(分享实录)

    内容来源:宜信技术学院第3期技术沙龙-线上直播|AI中台——智能聊天机器人平台 主讲人:宜信科技中心AI中台团队负责人王东 导读:随着“中台”战略的提出,目前宜信中台建设在思想理念及架构设计上都已经取 ...

随机推荐

  1. 学习poisson.c

    static char help[] = "A structured-grid Poisson problem with DMDA+KSP.\n\n"; #include < ...

  2. web前端框架之Vue hello world

    [博客园cnblogs笔者m-yb原创,转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] http ...

  3. 常见图片格式PNG,JPEG,BMP,GIF区别总结

    在前端工作久了经常会遇到各种格式的图片文件,现文做一些区别总结,帮助理解但不深入. [PNG](Portable Network Graphics) PNG是一种无损压缩的位图图形格式,主要有PNG8 ...

  4. Spring MVC流程

    这是spring mvc框架结构图,图片是很早在网上撸过来的,具体在哪忘了…… 早期学习Springmvc 并没有具体了解过,只知道这样用很爽,最近了解下基本结构流程及组件所在…… 执行流程 Spri ...

  5. 安装vue脚手架和vue安装element-ui

    首先下载安装node.js,因为vue依赖node.js,然后用npm安装vue,步骤如下: 安装成功后安装element-UI,步骤如下: 完成后用npm run dev 运行项目.

  6. node.js安装使用express框架

    官网:http://www.expressjs.com.cn/ 使用方式(如果后面需要添加路由等推荐第二种方式,不然需要需要手动添加):一.自己动手搭建 1. 新建项目文件夹,如test,并在命令行中 ...

  7. RabbitMQ 的安装----Linux环境

    CentOS7  安装RabbitMq 参考------>  https://www.cnblogs.com/liaojie970/p/6138278.html https://www.cnbl ...

  8. Java面试题集锦(持续更新)

    1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: -抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这 ...

  9. ubuntu16.04运行ros的时候编译工作空间catkin_make出现的一个问题Could not find a package configuration file provided by

    最近在进行ros里面的gazebo仿真之前需要对自己创建的工作空间进行编译,但是进行编译的时候输入catkin_make出现如下错误提示 查阅ROS问答社区之后发现两个比较有用的链接,如下 https ...

  10. .Net Core+Angular6 学习 第四部分(EF Core(Code First))

    目的: 打算通过EF core 练习从database receive data 显示到UI. 1. 创建一个新的project Model.定义一个 base interface entity以及实 ...