用 Python 实现聊天机器人
0 前言
一个人在家无聊,所以我打算弄一个机器人和自己聊天,后来弄着弄着就出现一点小偏差,聊天机器人是有了,就是没办法用来和自己聊天,只能给别人聊天
不过,好在也算是实现了,那就把具体过程分享出来吧
1 环境说明
Win10 系统下 Python3,编译器是 Pycharm,需安装 wxpy 和 pillow 这两个库。
1.1 安装第三方库
1.1.1 没安装 Pycharm
系统是 Win10 的话,直接按Win键+R,然后输入cmd,然后按回车。
然后分别输入pip install -U wxpy 和 pip install pillow 就可以安装 wxpy 和 pillow了。
1.1.2 安装了Pycharm
安装了就直接按照下面的来
1.2 申请API
去申请一个图灵机器人的 API,然后把获得的 API key 记住
链接:http://www.tuling123.com/
先注册,然后找到机器人设置,下拉一点,就可以找到 API key 了
2 相关代码
2.1 使用图灵机器人自动与指定好友聊天
from wxpy import *
bot = Bot()
my_friend = ensure_one(bot.search('好友名字')) #想和机器人聊天的好友的备注
tuling = Tuling(api_key='你申请的 API KEY')
@bot.register(my_friend) # 使用图灵机器人自动与指定好友聊天
def reply_my_friend(msg):
tuling.do_reply(msg)
embed()
2.1 群聊
from wxpy import *
bot = Bot(cache_path=True)
my_group = bot.groups().search('群聊名称')[0] # 记得把名字改成想用机器人的群
tuling = Tuling(api_key='你申请的 API KEY') # 一定要添加,不然实现不了
@bot.register(my_group, except_self=False) # 使用图灵机器人自动在指定群聊天
def reply_my_friend(msg):
print(tuling.do_reply(msg))
embed()
只要前面都是没出错,把代码复制到 pycharm ,然后把名字和 API key 修改一下就可以了。(这里只介绍安装了 pycharm 后的做法)
然后就是运行代码,先鼠标右键,然后选择 Run
等一会儿就会看见有一个二维码出现,用手机扫描该二维码,在手机上面点击登录,看见 Login successfully as 你的微信昵称就说明成功了,可以让人调戏机器人了。
如果是群聊,有两个微信号、两台手机的体验才是最好的;一对一的话就随意了,怎么来都行。
如果测试过程中发现登录不了,可能是两个原因:
- 微信版本过低,升级吧
- 登录了这个,请不要再登录网页版微信,也不要退出当前的网页版微信。
3 相关说明
wxpy 这个库是基于 itchat 的,我是因为使用不了 itchat 才使用 wxpy 的
(个人觉得 wxpy 的体验相对较好。)
wxpy 不但可以实现聊天机器人,还覆盖了各类常见基本功能:
- 发送文本、图片、视频、文件
- 通过关键词或用户属性搜索 好友、群聊、群成员等
- 获取好友/群成员的昵称、备注、性别、地区等信息
- 加好友,建群,邀请入群,移出群
对了,图灵机器人可以接入微信公众号的,我已经接入了,暂时来说不会关,和我的机器人聊个天呗~
如你所见微信号和QQ都可以接入,就看你愿不愿意了,接入功能不需要使用python,直接注册就可以使用。
还有一个小i机器人,也是可以直接接入微信公众号(至于用 wxpy 实现群聊机器人,我弄了好久都没搞定
)
现实测试中,感觉图灵机器人比小i机器人智能一点,不过小i机器人可以设置自动回复。
对了,唠叨一句,最好不要两个都开了,而且,不知道为什么,我关不了小i机器人,哪怕我已经删除公众号了
4 相关链接
itchat 的项目主页:https://github.com/littlecodersh/itchat
itchat 的说明文档:http://itchat.readthedocs.io/zh/latest/
wxpy 的项目主页:https://github.com/youfou/wxpy
wxpy 的说明文档:http://wxpy.readthedocs.io/zh/latest/
申请图灵机器人:http://www.tuling123.com/
申请小i机器人:http://cloud.xiaoi.com/
题图:by Cole Hutson on Unsplash
- bootstrap validator 使用示例
- 如何通过jq和php实现返回父级页面(附带记忆功能)
- springmvc下载文件
- PHP获取URL地址的一些坑
- 使用ResourceBundle读取配置文件
- 关于exp statistics的问题和简单测试(82天)
- laravel访问路由在nginx服务器上无法处理
- How Tomcat Works, A Guide to Developing Your Own Java Servlet Container
- 【开发指南】如何为nexus 5编译固件
- 支持向量机(SVM)入门详解(续)与python实现
- 数据库
- 关于Bom头的一些坑
- 使用shell脚本查看数据库负载情况(81天)
- 无法连接远程mysql数据库解决方案
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法