利用itchat写一个聊天机器人

  • 聊天机器人
  • 图灵机器人
  • 需要的库
  • **自动回复私聊消息**
  • **自动回复群聊消息**
  • 结语:

聊天机器人

偶然在CSDN上看到大佬用20行教你写一个聊天机器人,觉得甚为有趣,所以就自己尝试了一下,在此记录并分享自己的学习过程。

图灵机器人

图灵机器人是可以自动回复的智能机器人,每个人都可以免费创建,很方便。官网为http://www.turingapi.com/。
创建好后可以看到提供了apikey值和api使用文档

点击进入使用文档可以找到API接入文档,可以看到接口地址,请求方式以及请求参数,具体参数也有表格给出。具体使用后面程序会详细讲解


通过调用API接口可以实现提取机器人的智能回复然后作为微信的自动回复,这就是我们这次小程序的目的

**

需要的库

**
该小程序需要用到以下两个库:
itchat:用来控制微信的库(可以通过pip install itchat安装)
requests:用来发起post请求获取到图灵机器人回复
`

自动回复私聊消息

导入需要的两个库`

import itchat
import requests

itchat库里用函数,具体可以参考官方文档,其中itchat.msg_register可以检测事件,参数itchat.content.TEXT检测的是文本信息,让我们先来看看捕获到的文本信息是什么格式。

@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):print(msg)

在聊天界面发送了“测试”,输出为

可以看到键为Text的值为获取到的文本,定义获取机器人回复的函数,根据官方文档构造的请求如下:

def get_response(msg):apiUrl = 'http://openapi.tuling123.com/openapi/api/v2'data = {info = msg['Text']"reqType":0,  "perception": {"inputText": {"text": info   #传入的值为所捕获的文本信息}},"userInfo": {"apiKey": "9c434dd5f0f949ec90cf1384b2ad3a88",  #创建的机器人的apikey值"userId": "XXX"       #随便输入一个值都可以}
}response = requests.post(apiUrl, json=data).json()  #利用requests发送一个post请求print(response )return response.get('results')[0]['values']['text'] #提取机器人回复

输出为

我这里在写博客的时候请求次数已经超出了限制,不过不妨碍我们分析数据结构,results键值为一个列表,其中的values键值里的text键值就是机器回复,我们只需要把这部分数据提取出来并返回给控制台就可以做到自动回复了。这一部分代码如下

@itchat.msg_register(itchat.content.TEXT) #私聊消息
def text_reply(msg):print(msg.get('Text'))return get_response(msg)

自动回复群聊消息

想要捕获群消息事件,只需要添加isGroupChat=True得到参数即可,我是想要在群里被人@的时候做出自动回复,所以增加@的判断

@itchat.msg_register(itchat.content.TEXT,isGroupChat=True) #群消息
def group_text_reply(msg):print(msg['Text'])if "@KimihaSukiDa" in msg.get('Text'):     return get_response(msg)

我用了我的微信群昵称KimihaSukiDa,可以换成你所对应的群昵称。对应的获取机器人回复函数中也增加了判断:

 if "@" in msg['Text']:if msg.get('Text')[0] == "@":info = msg['Text'][14:]elif msg.get('Text')[-13] =="@":info = msg['Text'][:-14]else:info = msg['Text']

在此以常用的两种方式作为判断,当别人先@你后再发消息和发完消息在@你。捕获到的msg值是str类型,所以可以通过切片的方式截取到有效信息,我的这个昵称加上@有13个字符,所以捕获到的有效消息应该从第14个字符开始算,另一个情况同理。

**
最后加上开始程序,每次运行程序需要扫描二维码登录,不想每次扫码可以加上hotReload参数。

itchat.auto_login(hotReload=True)
itchat.run()

结语:

这是第一次写博客,不好的地方请见谅。至此,大家就可以去写自己的聊天机器人了,和自己的小伙伴玩玩这个可爱的机器人~**

利用itchat写一个聊天机器人相关推荐

  1. c语言编写对答机器人_来,你也可以用 C 语言写一个聊天机器人

    来,你也可以用 C 语言写一个聊天机器人 你是不是一直在面对着枯燥的 C 语言特性.摸索着前人写过的各种算法,不是因为自己的兴趣,而是依靠自身的毅力,学得很苦吧. 好吧,我们找一个好玩一点的东西,一起 ...

  2. 如何用Java写一个聊天机器人

    文章目录 建议结合新版教程看 写在前面的的话 免责声明 你需要提前会的东西 我们要使用的框架 首先我们先下载一个Demo 文件配置 Demo里面的的目录结构 在配置文件中加上你小号的QQ名字和密码 我 ...

  3. python自动聊天机器人设置回复延迟_用Python 写一个聊天机器人陪你聊天(文尾有彩蛋)...

    一.工具简介 1--Python.写代码的工具: 2--itchat库.第三方库,用来登录微信,接收并回复微信好友信息: 3--图灵机器人.第三方接口,我们本次使用的机器人: 二.代码解析 1.准备 ...

  4. 教你用Python写一个聊天机器人

    程序员有三种美德:懒惰,急躁和傲慢 要想实现功能我们需要首先认识一个库,itchat itchat是一个开源的微信个人号接口,通过它你只需要编写简单的代码便能实现复杂的功能 如果你没有安装过它,你可以 ...

  5. php 利用redis写一个聊天室,使用Redis完成聊天室功能

    Redis提供了Pub/Sub(发布/订阅)模式的消息机制.发布者向指定频道发布消息,订阅了该频道的订阅者就可以获取消息.通过该机制,我们可以完成聊天室.公告牌等功能. 首先,来介绍下关于pub/su ...

  6. python 贴吧自动回复机-用python itchat写一个微信机器人自动回复

    首先看一下效果: 进入正题: 一.首先要去图灵机器人网站注册一个机器人账号: 你可以获取自己的图灵机器人apikey 懒得话不注册也可以,我下面的代码里面有我自己的,照样可以用.^_^ 二.好了,开始 ...

  7. python手机自动回复_用python itchat写一个微信机器人自动回复

    首先看一下效果: 进入正题: 一.首先要去图灵机器人网站注册一个机器人账号: 你可以获取自己的图灵机器人apikey 懒得话不注册也可以,我下面的代码里面有我自己的,照样可以用.^_^ 二.好了,开始 ...

  8. php 利用redis写一个聊天室,Redis实现多人多聊天室功能

    本文为大家分享了Redis支持多人多聊天室功能的设计代码,供大家参考,具体内容如下 设计原理 左边的一个数据域,代表两个聊天室,聊天室id分别是827,729 在聊天室827里,有2个人,分别是jas ...

  9. 无聊,几行python代码写一个聊天机器人陪你聊天

    代码 利用爬虫功能实现. import urllib.request import rewhile True:x = input("主人:")x = urllib.parse.qu ...

最新文章

  1. Android TextView的一些小知识
  2. python操作mysql(四)
  3. linux和哪些主机配了互信,linux主机互信
  4. java aspectj_Java:AspectJ的异常翻译
  5. 前端学习(1667):前端系列实战课程之拖拽
  6. 计算机专业用锐龙笔记本,轻松应对工作挑战——ThinkPad T14 锐龙版,适合办公的笔记本电脑...
  7. java 比较器类_java常用类——比较器
  8. wmaster0接口的简单介绍
  9. J2EE架构师路线脑图
  10. 电机与拖动基础--第二章第一节
  11. Java将指定文件/文件夹压缩成zip、rar压缩文件--解決中文乱码
  12. word中插入公式2010和2016两个版本)
  13. 你最该知道的事(高级)
  14. 最短路默写1最短路默写2
  15. 5G千兆路由器工业物联网应用
  16. ECM是什么-企业内容管理
  17. 《证券投资二十四堂课》读书笔记
  18. 02_计算机网络笔记-网络拓扑-交换机-VLAN
  19. RxSwift--RxSwift简介
  20. js 中日期转换成时间戳

热门文章

  1. 字符串大小写转换器(html+css+js)
  2. android仿支付宝头像裁剪,易用的头像裁剪上传、头像美化组件
  3. “use strict“是什么? 使用它有什么优缺点?
  4. 服务器cpu架构介绍
  5. 上传本地项目到github
  6. Frp某场景下实现多层代理
  7. 达州铭仁园2021年高考成绩查询,持续更新!达州各县市区中学2019年高考成绩报喜了...
  8. 洛谷P3567 KUR-Couriers 主席树
  9. url采集工具,关键词采集,联系方式采集
  10. Python采集微博热评进行情感分析祝你狗年脱单