如何把自己的微信变成机器人

先看效果图,我把搜的微信小号变成了机器人,然后用微信大号和它进行对话,对话截图如下:

后台打印的数据如下:

实验准备:
1.wxpy库,安装只需一部:sudo apt-get install wxpy
2.注册欧拉蜜人工智能开放平台,这是地址,并创建一个应用。

完整代码:

# -*- coding: utf-8 -*-
# @Time    : 2019/8/30 上午9:26
# @Author  : lixing
# @Email   : jingyoushui@163.com
# @File    : wechat2.py
# @Software: PyCharm
"#codeing=utf-8"
import json
import requests
from wxpy import *
from NluAPISample import NluAPISample
import argparse
import redef olami(text):url = "https://cn.olami.ai/cloudservice/api"appKey = "你的appKey"appSecret = "你的App Secret"nluApi = NluAPISample()nluApi.setLocalization(url)nluApi.setAuthorization(appKey, appSecret)result = json.loads(nluApi.getRecognitionResult(nluApi.API_NAME_NLI, text))# print(type(result))print("\nResult:\n\n",result)content = ""t = result['data']['nli'][0]type = result['data']['nli'][0]['type']if(type=="joke"):content = t['data_obj'][0]['content']if(type=="selection"):item = []for i in t['data_obj']:item.append("名称:"+i['hotel_name'])item.append("地址:" + i['hotel_address'])item.append("链接:" + i['description_url'])content = "\n".join(item)if(type=="openweb"):content = t['data_obj'][0]['url']if(type == "baike"):item = []content = t['data_obj'][0]['description']item_id = t['data_obj'][0]['field_name']item_value = t['data_obj'][0]['field_value']for i in item_id:item.append(i +":"+item_value[item_id.index(i)])items = "\n".join(item)content = content+("\n"+items)return str(result['data']['nli'][0]['desc_obj']['result'])+("\n"+content)bot = Bot(cache_path=True,console_qr=True)  # 登录缓存
found = bot.friends().search('某某1')
obj1 = found[0]
print(type(obj1))
found2 = bot.friends().search('某某2')
obj2 = found2[0]
print(obj2)found3 = bot.groups().search('群1')
print(found3)
obj3 = found3[0]
user = [obj1,obj2,obj3]
print(user)
@bot.register(user)
def message(msg):print('msg:' + str(msg))if(msg.text):ret = olami(msg.text)res1 = re.sub("欧拉蜜","XXX",ret)res2 = re.sub("7岁", "xx岁", res1)return res2else:ret = "我现在还只能支持文字呦"return ret# embed()
if __name__ == '__main__':# 堵塞线程bot.join()

代码详解:
appKey appSecret换成olami平台上自己创建的应用的,如图所示:
olami接口返回的json格式数据如下:

{"nli": [{"desc_obj": {"result": "好的,那你听好喽。","name": "","type": "joke","status": 0},"data_obj": [{"content": "某日,生物老师问:“没有尾巴的是什么熊?” 某生说:“无尾熊。” 老师问:“没有脖子的是什么熊?” 某生说:“无脖熊。” 老师再问:“没鸡鸡的是什么熊?” 某生答:“无鸟熊。” 老师:“错!” 某生再答:“嗯~~~无鸡熊。” 老师:“错!唉……是母熊嘛!……现在的小孩……!!”  "}],"type": "joke"}]
}

其中type不同,json的Key也不同,根据以上json字段,取出content的代码如下:

 t = result['data']['nli'][0]type = result['data']['nli'][0]['type']if(type=="joke"):content = t['data_obj'][0]['content']

依次type还有selection,openweb,baike等类型的

if(type=="selection"):item = []for i in t['data_obj']:item.append("名称:"+i['hotel_name'])item.append("地址:" + i['hotel_address'])item.append("链接:" + i['description_url'])content = "\n".join(item)if(type=="openweb"):content = t['data_obj'][0]['url']if(type == "baike"):item = []content = t['data_obj'][0]['description']item_id = t['data_obj'][0]['field_name']item_value = t['data_obj'][0]['field_value']for i in item_id:item.append(i +":"+item_value[item_id.index(i)])items = "\n".join(item)content = content+("\n"+items)

@bot.register(user)用来注册监听的用户,可以是好友,也可以是群,如果是单个用户或群:

user = bot.friends().search('某某1')
@bot.register(user)
def message(msg):

如果是监听多个用户和群,需要放在一个列表里,但是user本身就是一个列表,user类型是<class 'wxpy.api.chats.chats.Chats'>,user的值是[<Friend: 某某1>]需要将它第一个元素取出来,然后再一起放在一个列表里。像这样[<Friend: 苹果粥>, <Friend: 静幽水>, <Group: 都是我呀>]

found = bot.friends().search('苹果粥')
obj1 = found[0]
found2 = bot.friends().search('静幽水')
obj2 = found2[0]
found3 = bot.groups().search('都是我呀')
obj3 = found3[0]
user = [obj1,obj2,obj3]
print(user)
@bot.register(user)
def message(msg):

当微信接收到文本信息的时候,会调用olami的api,然后返回微信就会自动回复。当然可以把欧拉蜜换成自己的名字。

@bot.register(user)
def message(msg):print('msg:' + str(msg))if(msg.text):ret = olami(msg.text)res1 = re.sub("欧拉蜜","XXX",ret)res2 = re.sub("7岁", "xx岁", res1)return res2else:ret = "我现在还只能支持文字呦"return ret

python教你如何把自己的微信变成机器人相关推荐

  1. (Python,Hanlp,Neo4j)基于电影图谱搭建微信问答机器人(一)

    近期着手在构建毕业设计系统,由于早期时间偶然接触到一个公众号推送关于人工智能客服的信息,心血来潮也想自己搭建一个.在经历了不断的踩坑填坑,总算是达成目标.记录一下整体搭建. 话不多说先上效果图 具体流 ...

  2. python opencv创建图像_打开国庆的正确方式,教你用OpenCV-Python轻松生成微信国庆版头像...

    原标题:打开国庆的正确方式,教你用OpenCV-Python轻松生成微信国庆版头像 OpenCV轻松搞定,不信看内容 相信最近两天大家都被微信头像的国庆版新装刷爆了朋友圈了,不少人都@微信官方,要求换 ...

  3. python代码图片头像_Python帮你微信头像任意添加装饰别再@微信官方了

    @微信官方 昨天朋友圈刷爆了@微信官方的梗,从起初的为头像添加国旗,到最后的各种Book思议的需求-而我呢?@了辣么辣么多的奥特曼,结果还是加班到12点多-最后想想,人还是得靠自己吧,@我自己吧- 昨 ...

  4. python爬虫教程-Python教父|廖雪峰老师官方爬虫教程,13个案例带你全面入门!

    原标题:Python教父|廖雪峰老师官方爬虫教程,13个案例带你全面入门! Python简直就是万能的,你用Python都做过哪些事? 用网页看各大网站的VIP视频,用python下载? 用Pytho ...

  5. 中文编程,最精致的python访客登记系统实例项目,微信机器人不再只当人工智障---08

    中文编程,最精致的python访客登记系统实例项目,微信机器人不再只当人工智障---08 - 浩海泛舟的文章 - 知乎 https://zhuanlan.zhihu.com/p/51902838 面向 ...

  6. python黑科技:Python大佬用20行代码带你打造一个微信聊天机器人,真神了~

    如何用20行Python代码打造一个微信群聊助手? 1.安装python环境 2.安装python的itchat库 3.安装itchat库 4.Linux 5.申请图灵机器人API和key 6.编写p ...

  7. 手把手使用Python教你破解谷歌(Google)人机验证码—上篇

    手把手使用Python教你破解谷歌(Google)人机验证码-上篇 众里寻他千百度.蓦然回首,那人却在,灯火阑珊处. /1 前言/ 今天呢,咱们来说一下Google,我们都知道,Google是目前地表 ...

  8. python社区微信群_30行Python代码,打造一个简单的微信群聊助手,简单方便

    大家都知道,最近代码君迷上了Python,一直在研究这门语言,还是那句话,人生苦短,我学Python,今天代码君要教大家一个黑科技,30行代码实现自己定制的微信群聊助手,这个助手有什么用呐,就是用来活 ...

  9. 三步教你用Node做一个微信哄女友(基友)神器,小白可上手

    前言 不知道大家最近有没有被python版的<微信每日说>刷屏呢,他可是霸占了github的python热门快两周了.我们前端的小伙伴是不是也看着有点眼馋呢,因为毕竟是不那么熟悉的pyth ...

  10. python程序30行_30行Python代码,打造一个简单的微信群聊助手,简单方便

    大家都知道,最近代码君迷上了Python,一直在研究这门语言,还是那句话,人生苦短,我学Python,今天代码君要教大家一个黑科技,30行代码实现自己定制的微信群聊助手,这个助手有什么用呐,就是用来活 ...

最新文章

  1. $_FILES上传错误类型
  2. netty做一个posp的网络_皑云网络——接手一个新的SEM竞价账户怎么做?
  3. [C#]最简单的Base64加密解密
  4. Linux远程管理协议相关知识介绍
  5. Tensorflow中查看gpu是否可用
  6. malloc动态分配数组以及指针数组大小
  7. mysql数据库的服务无法启动,mysql服务无法启动,服务没有报告任何错误
  8. SpringCloud工作笔记044---SpringCloud分布式服务器配置要求_记录一下
  9. redis——哈希(hash)
  10. html5开发桌面程序调用dll,使用Visual Studio开发Html5应用
  11. 面试题30.最小的k个数
  12. ERROR: This version of Android Studio cannot open this project, please retry with Android Studio 3.
  13. editplus使用
  14. WPF实现鼠标拖动框选功能
  15. 解决iOS10.3打开APP提示未受信任的企业级开发者
  16. [转载]matlab中分号、冒号、逗号等常用标点符号的作用
  17. Window10总是自动打开网络代理的解决方案法
  18. 《保卫萝卜》分析续——地图构成
  19. Zephyr pinctrl
  20. fastreport在delphi中的使用

热门文章

  1. 基于Arch的live系统
  2. 平面设计是一种创造性的艺术形式
  3. 即时通讯开发之开源工程WebRTC原理
  4. IDEA中输入法无法切换成中文解决方法
  5. IE浏览器弹框提示脚本发生错误
  6. 重装win10专业版系统
  7. Android三级缓存机制工具类的实现
  8. Unity实现将图片上传到服务器功能
  9. 二进制数相减计算机如何计算,二进制减法怎么算
  10. 当前的安全设置不允许从该位置下载文件。 的解决办法