原理:

通过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 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等。

另外这里也可对此机器人回复内容等进行进一步的探索和拓展。

***每天进步一点点***

===感激并前行着===

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

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

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

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

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

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

QQ 聊天机器人小薇发布!

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

QQ 聊天机器人API

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

QQ聊天机器人 Delphi代码

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

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

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

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

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

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

随机推荐

C# 获取当前月第一天和最后一天 计算两个日期差多少天

获取当前月的第一天和最后一天 DateTime now = DateTime.Now; DateTime firstDay = ); DateTime lastDay = firstDay.AddMo ...

JavaScript中的parseInt的进制问题

昨天帮原来同学写个js,碰见个问题,parseInt('08')的结果竟然是0后来突然想过来,是八进制的原因parseInt 方法 返回由字符串转换得到的整数.parseInt(numString, ...

【uoj58】 WC2013—糖果公园

http://uoj.ac/problem/58 (题目链接) 题意 给定一棵树,每个点有一个颜色,提供两种操作: 1.询问两点间路径上的${\sum{v[a[i]]*w[k]}}$,其中${a[i] ...

在Eclipse中设置Java类上面的注释(包含作者、日期等)

希望在Eclipse中,让Java类上面的注释像下面这样,改如何设置呢? 在Eclipse中,点击菜单中的Window-->Preferences,打开如下窗口:

基本的Web控件四

基本的Web控件用法二 ListBox控件 页面布局:

ListBox控件

学生列表:

分析轮子(五)- Vector.java

注:玩的是JDK1.7版本 一: 先上类图,从类图上看和 ArrayList.java 非常相像,可查看 分析轮子(一)-ArrayList.java 二:然后看源码,发现和 ArrayList.ja ...

hdu 4911 Inversion and poj2299 [树状数组+离散化]

题目 题意:  给你一串数字,然后给你最多进行k次交换(只能交换相邻的)问交换后的最小逆序对个数是多少. 给你一个序列,每次只能交换相邻的位置,把他交换成一个递增序列所需要的最少步数 等于 整个序列的 ...

lua C++ wrapper

背景 最近在研究lua的c++绑定库,使用过一下几个 luabind 问题:没人维护 https://github.com/vinniefalco/LuaBridge https://github.c ...

(转)GCT之逻辑经验总结(拿来主义)

GCT逻辑考试,并非考核逻辑专业知识,而是考核考生的日常逻辑思维能力.应该说日常逻辑思维能力是人在成长过程中及在社会活动中形成的,因此,只要运用好这种能力,就能取得逻辑考试的好成绩.因此可以认为:GC ...

linux学习——sed工具

命令格式: sed [-nefr] [动作] 1.sed可以分析标准输入(STDIN)的数据,然后将数据处理后,再将他输出到标准输出(STDOUT),他有替换.删除.新增.选定特定行等处理功能.sed ...

python开发qq聊天机器人_python3+qqBot+图灵机器人实现qq聊天机器人相关推荐

  1. python开发串口通信界面_python3脚本篇1-串口通讯脚本

    前言 本文我们来学习Python软件包pyserial的使用,硬件采用wemos D1开发板,直接烧录串口章节代码即可,本文主要编写PC端Python脚本,完成脚本和外接串口设备通讯的功能. 一.基础 ...

  2. python开发网络程序教程_python3编写C/S网络程序实例教程

    本文以实例形式讲述了python3编写C/S网络程序的实现方法.具体方法如下: 本文所述实例是根据wingIDE的提示编写的一个C/S小程序,具体代码如下: client端myclient.py代码如 ...

  3. python编程视频-Python开发视频百度就得看这个!

    Python 是一门面向对象的编程语言,它相对于其他语言,更加易学.易读,非常适合快速开发 ,是一门融合性极强的"胶水语言",Python语言在编程语言排名中连续十年上升,在人工智 ...

  4. python开发qq聊天机器人_Python qqbot 实现qq机器人的示例代码

    qqbot 是一个用 python 实现的.基于腾讯 SmartQQ 协议的 QQ 机器人框架,可运行在 Linux . Windows 和 Mac OSX 平台下. 你可以通过扩展 qqbot 来实 ...

  5. 用python开发微信公众平台聊天机器人

    最近用python写了一个聊天机器人的微信公众号,网上找的开发文档参差不齐,官方文档也比较老旧,还有部分小问题.于是,分享一下我的思路. 开发环境 windows sever 2008+python3 ...

  6. 当程序员的一个人无聊时,甚至用Python开发出机器人看他们聊天

    当程序员的一个人独孤的时候,甚至可以用Python开发出两个机器人看他们聊天 当你无聊的时候,可能会刷一下手机看一下新闻,看看电视剧,发发呆. 但是当程序员无聊起来的时候,甚至可以用Python开发两 ...

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

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

  8. 用Python开发基于Mirai框架的QQ机器人-1. 安装与搭建

    首先,要安装mirai-console-loader,以下简称mcl,github仓库位置:mirai-console-loader. 下载解压后,用cmd进入mcl的目录,运行mcl就可以了,设置就 ...

  9. Python开发入门(三) | itchat实现微信机器人

    前言: 如今微信已经成为了个人社交的很大一部分,无论生活,学习,还是工作,我们的社交已经离开不了微信~~ 接下来来了解itchat~~ itchat是一个开源的微信个人号api接口,通过使用pytho ...

  10. 基于图灵api实现微信聊天机器人

    基于图灵api实现微信聊天机器人 尝试了一下最近很火的聊天机器人,记录下实现过程. 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -> 微信将数据发送给 ...

最新文章

  1. insightface scrfd人脸检测测试
  2. Coursera系列-R Programming第三周-词法作用域
  3. leetcode 1504. Count Submatrices With All Ones | 1504. 统计全 1 子矩形(单调栈)
  4. oracle 批量 重建索引,Oracle重建索引Shell脚本、SQL脚本分享
  5. 老司机教你分析日志:分析用户的地理位置信息
  6. DotNetBar SuperGridControl控件
  7. SSRS(rdl报表)分页显示表头和对表头的冻结处理
  8. 怎么用微信打开wifi连接到服务器,微信一键连wifi在哪里 微信一键连wifi怎么使用...
  9. 微信添加地址时选择地区功能是怎么实现的
  10. vue脚手架结构目录文件
  11. 谷歌员工年薪中位数近190万元!科技公司年薪排行,哪家强?
  12. 笔记本连接不上外接显示器_如何将多个外接显示器连接到笔记本电脑
  13. 栅格地图中自由区域之Bresenham算法及个人搜索算法对比
  14. 神经网络训练样本制作_VOC格式_FOR_YOLO(Darknet)_AND_PVANet(FasterRCNN)
  15. 如何配置jade的环境变量
  16. 我开的游戏经常被攻击该怎么办,云服务器陷入黑洞了要怎么处理,有没有什么好的办法彻底解决攻击
  17. 为什么C语言中int的表示范围是-32768~32767
  18. 华硕Z390P主板-win10-ubuntu18.04双系统安装记录(20200626)
  19. 回望过去,展望未来---关于2015it报告的总结
  20. DDD 领域驱动设计落地实践系列:工程结构分层设计

热门文章

  1. 相位一致性的基本原理及应用问题
  2. Unity 模拟鼠标点击
  3. USB C口5V输入,四节串联锂电池充电管理芯片,IC电路板PW4405芯片-22号电路板
  4. COMSOL 计算流体动力学模型仿真案例(更新中)
  5. Android 分贝测试仪功能,Android最新大厂面试真题总结
  6. ubuntu下搜狗拼音输入法不见了
  7. 如何在Ubuntu18.4中设置ERPNEXT开源ERP生产环境开机运行
  8. PMP 第10章 项目沟通管理
  9. POJ 3744 Scout YYF I
  10. 华为网络设备交换机路由器查看日志命令方法