这里我主要用了3个机器人,可以切换。

  1.图灵机器人  (傻的不行,一直在问别人问题,没有限制)

    http://www.tuling123.com

  2.showApi上的图灵机器人  (感觉最聪明,可以识别微信表情,英文,中文等,但是因为我是普通会员,每天1000次调用)

    https://www.showapi.com/api/lookPoint/60

  3.茉莉机器人  (功能丰富,但是只识别中文,不识别英文,微信表情)

    http://www.itpk.cn/robot.php

  代码如下:

from itchat.content import *
import itchat
import json
import requests
from ShowapiRequest import ShowapiRequest
import os
import time
import datetime
import urllib
import urllib.request # 调用图灵机器人的api,根据聊天消息返回回复内容
def tuLing(info):
appkey="************"    #自己注册
url="http://www.tuling123.com/openapi/api?key=%s&;info=%s"%(appkey,info)
req=requests.get(url)
content=req.text
data=json.loads(content)
answer=data['text']
return answer # 调用showApi的图灵机器人,根据聊天消息返回回复内容
def showRobot(info="",nickName="",imgDir=""):
my_appId='****' #自己注册
my_appSecret='******************' #自己注册
r = ShowapiRequest("http://route.showapi.com/60-27", my_appId, my_appSecret)
r.addBodyPara("userid", nickName)
if info !="":
r.addBodyPara("info", info)
else:
r.addBodyPara("info", "你好")
if imgDir !="" :
r.addFilePara("img", imgDir)
res = r.post()
data=json.loads(res.text)
return data['showapi_res_body']['text'] # 调用茉莉机器人是,根据聊天消息返回回复内容
# 指令:
# 地区天气 上海天气 查询上海的天气预报(市级或县级地区)
# 天气 天气 根据访问IP自动获取天气预报
# @tq您的ip地址 @tq8.8.8.8 查询IP地址为8.8.8.8的天气预报
# @ip您的ip地址 @ip8.8.8.8 查询IP地址为8.8.8.8的位置和经纬度
# ip ip 查询访问者的IP地址详情
# @qq要查询的QQ号码 @qq123456 查询QQ号码123456的信息
# @lol英雄联盟大区--角色名称 @lol艾欧尼亚--我要超神 查询艾欧尼亚区我要超神的战绩信息
# @sfz身份证号码 @sfz111111111111111111 查询身份证号码公民所在地、生日和性别
# @sjh手机号码 @sjh18888888888 查询手机号码归属地、城市区号和卡的类型
# @cy四字成语 @cy一马当先 【一马当先】的成语接龙
# 笑话 笑话 随机返回一个笑话
# 观音灵签 观音灵签 随机抽取观音灵签
# 月老灵签 月老灵签 随机抽取月老灵签
# 财神爷灵签 财神爷灵签 随机抽取财神爷灵签 def moLi_Robot(question):
Key='***************' #自己注册
Secret='*******' #自己注册
url='http://i.itpk.cn/api.php?question=%s&api_key=%s&api_secret=%s'%(question,Key,Secret)
req=requests.get(url)
content=req.text
if question in ['笑话','观音灵签','月老灵签','财神爷灵签']:
if content.startswith(u'\ufeff'):
content = content.encode('utf8')[3:].decode('utf8')
jsondata=json.loads(content) # 处理'笑话','观音灵签','月老灵签','财神爷灵签'数据
if question=='笑话':
data='%s\n%s'%(jsondata['title'],jsondata['content'])
elif question=='观音灵签':
data='签号:%s\n抽中:%s\n签语:%s\n解签:%s\n白话解签:%s\n'%(jsondata['number1'],jsondata['haohua'],jsondata['qianyu'],jsondata['shiyi'],jsondata['jieqian'],)
elif question=='月老灵签':
data='签号:%s\n抽中:%s\n诗意:%s\n解签:%s\n注释:%s\n白话解签:%s\n'%(jsondata['number1'],jsondata['haohua'],jsondata['shiyi'],jsondata['jieqian'],jsondata['zhushi'],jsondata['baihua'])
else: # 财神爷灵签
data='签号:%s\n签语:%s\n注释:%s\n解签:%s\n解说:%s\n含义:%s\n婚姻:%s\n事业:%s\n功名:%s\n失物:%s\n出外移居:%s\n六甲:%s\n求财:%s\n交易:%s\n疾病:%s\n诉讼:%s\n运途:%s\n谋事:%s\n生意:%s\n'%(
jsondata['number1'],jsondata['qianyu'],jsondata['zhushi'],jsondata['jieqian'],jsondata['jieshuo'],jsondata['jieguo'],jsondata['hunyin'],jsondata['shiye'],jsondata['gongming'],jsondata['shiwu'],jsondata['cwyj'],jsondata['liujia'],jsondata['qiucai'],jsondata['jiaoyi'],jsondata['jibin'],jsondata['susong'],jsondata['yuntu'],jsondata['moushi'],jsondata['hhzsy'],
)
elif question=='指令':
data="""指令:
地区天气 \t上海天气\t 查询上海的天气预报(市级或县级地区)\n
天气 \t天气\t 根据访问IP自动获取天气预报\n
@tq您的ip地址\t@tq8.8.8.8\t查询IP地址为8.8.8.8的天气预报\n
@ip您的ip地址\t@ip8.8.8.8\t查询IP地址为8.8.8.8的位置和经纬度\n
ip\tip\t查询访问者的IP地址详情\n
@qq要查询的QQ号码\t@qq123456\t查询QQ号码123456的信息\n
@lol英雄联盟大区--角色名称\t @lol艾欧尼亚--我要超神\t查询艾欧尼亚区我要超神的战绩信息\n
@sfz身份证号码\t@sfz111111111111111111\t查询身份证号码公民所在地、生日和性别\n
@sjh手机号码 \t@sjh18888888888\t查询手机号码归属地、城市区号和卡的类型\n
@cy四字成语\t@cy一马当先\t【一马当先】的成语接龙\n
笑话 \t笑话\t 随机返回一个笑话\n
观音灵签 \t观音灵签\t 随机抽取观音灵签\n
月老灵签 \t月老灵签\t 随机抽取月老灵签\n
财神爷灵签\t财神爷灵签\t随机抽取财神爷灵签\n
"""
else:
data=content
# return jsondata
return data # 根据NickName[]查找UserName[]
def findUserName(toNickName):
u = []
for i in toNickName:
try:
u1 = itchat.search_friends(i)[0]['UserName']
u.append(u1)
print('已将联系人\t',i,'\t加入了聊天机器人的对象')
except Exception as E:
print(i,"你没有此联系人")
print('------------------------------------')
return u # 根据群的NickName[]查找UserName[]
def findQunUserName(toQunNickName):
u = []
for i in toQunNickName:
try:
u1 = itchat.search_chatrooms(i)[0]['UserName']
u.append(u1)
print('已将群\t',i,'\t加入了聊天机器人的对象')
except Exception as E:
print(i,"你没有此群")
print('------------------------------------')
return u if __name__ == '__main__':
# 登录发送
itchat.auto_login(hotReload=True,statusStorageDir='itchat.pkl')
myUserName=itchat.get_friends(update=True)[0]['UserName']
myNickName=itchat.get_friends(update=True)[0]['NickName'] # 对指定的人当机器人
toSendUserNickName = ['sssss', 'ttttt', 'mmmmm','sssssssssssssssss']
toRobotUserName = findUserName(toSendUserNickName) # 对指定的群当机器人
toSendQunNickName = ['test','test2']
toRobotQunUserName = findQunUserName(toSendQunNickName) # 使用的机器人
RobotName=['tuLing','showRobot','moLi_Robot']
usingRobot=RobotName[2] #群机器人
@itchat.msg_register(TEXT,isGroupChat=True)
def reply(msg):
answer=""
for i in toRobotQunUserName:
if msg['FromUserName'] == i and msg['ActualUserName'] != myUserName :
if usingRobot=='tuLing':
answer = tuLing(msg['Text'])
elif usingRobot=='showRobot':
answer = showRobot(msg['Text'])
else:
answer = moLi_Robot(msg['Text'])
# print(answer)
itchat.send_msg(answer, msg['FromUserName'])
return @itchat.msg_register([TEXT,PICTURE],isFriendChat=True)
def replyText(msg):
fromNum=0 #toSendUserNickName[fromNum]给我发送信息
toNum=0 #判断我要给toSendUserNickName[toNum]发送信息 for i in toRobotUserName:
# 判断发送消息的人是你选定的人
if msg['FromUserName']==i :
# 传输的文件类型为照片
if msg['Type']=='Picture':
# 判断使用 那个机器人
if usingRobot=='showRobot':
# 下载照片
path =r'.\Info\Picture'
try:
os.makedirs(path)
print("%s 文件夹创建成功" % path)
except Exception as e:
print("%s 文件夹创建失败,可能已经存在此文件夹" % path) path += r'\%s' % msg['FileName']
msg['Text'](path) # 打印信息
an = showRobot(imgDir=msg['Text']())
print(datetime.datetime.now(), '\n', toSendUserNickName[fromNum], '给 我 :\n\t', msg['FileName'], '\t存储在', path)
elif usingRobot=='tuLing':
an = tuLing('照片')
else:
an = moLi_Robot('照片') # 传输的是文字
else:
# 判断使用 那个机器人
if usingRobot=='tuLing':
an = tuLing(msg['Text'])
elif usingRobot=='showRobot':
an = showRobot(msg['Text'])
else:
an= moLi_Robot(msg['Text']) print(datetime.datetime.now(),'\n',toSendUserNickName[fromNum],'给 我 :\n\t',msg['Text'],'\n')
print(datetime.datetime.now(),'\n','我 给', toSendUserNickName[fromNum], ':\n\t', an,'\n')
itchat.send_msg(an,i)
break
else:
fromNum += 1 # 我自己给上面指定的人发送信息,不是机器人发
for j in toRobotUserName:
if msg['ToUserName']==j:
break
else:
toNum += 1 if msg['FromUserName']==myUserName:
# 传输的文件类型为照片
if msg['Type'] == 'Picture':
print(datetime.datetime.now(),'\n','我 给',toSendUserNickName[toNum],':\n\t',msg['FileName'],'\n')
else:
print(datetime.datetime.now(), '\n', '我 给', toSendUserNickName[toNum], ':\n\t', msg['Text'], '\n') return itchat.run()

  需要注册的机器人:

  

  

  

  修改机器人:

  

  修改对那几个朋友使用机器人(这里是你微信对他们的备注):

  

  修改对那几个群使用机器人(这里是你微信上的群的名字):

  

  

  如果是自己对指定的朋友聊天,聊天消息会体现在调试台上,如果是群回复则不会。

  

版权

作者:feiquan

出处:http://www.cnblogs.com/feiquan/

版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

大家写文都不容易,请尊重劳动成果~ 这里谢谢大家啦(*/ω\*)

  

Python+ITchart实现微信机器人对指定的朋友和群自动回复的更多相关文章

  1. phantomjs + python 打造一个微信机器人

    phantomjs + python 打造一个微信机器人 1.前奏   媳妇公司不能上网,但经常需要在公众号上找一些文章做一些参考,需要的时候就把文章链接分享给我,然后我在浏览器打开网页,一点点复制过 ...

  2. Python+ITchart实现微信中男女比例,城市分布统计并可视化显示

    直接上代码: import itchat import os import csv import pandas as pd from pyecharts import Bar,Pie,Geo impo ...

  3. 用python自制微信机器人,定时发送天气预报

    0 引言 前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己.最近无意中发现了wxpy库,用它来做再合适不过了.以下是w ...

  4. Python微信机器人

    Python微信机器人 本文目录 一 简介 二 登录微信 三 微信好友男女比例 四 微信好友地域分布 五 微信聊天机器人 一 简介 wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量 ...

  5. Python之微信-微信机器人

    一 简介 二 登录微信 三 微信好友男女比例 四 微信好友地域分布 五 微信聊天机器人 一 简介 wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量接口优化提升了模块的易用性,并进行 ...

  6. python+爬虫+微信机器人 打造属于你的网购价格监督利器

    写在最前 程序是为人类服务的,最近正好身边小伙伴们在做球衣生意,当然是去nikenba专区购买了,可是有些热门球衣发布几分钟就被抢完,有些折扣球衣也是很快就被抢售一空,那么我们只能靠自己的眼睛一直盯着 ...

  7. 手把手教你用Python代码实现微信聊天机器人 -- Python wxpy

    关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号 欢迎大家关注我的微信公众号:「醉翁猫咪」 来学习了,微信聊天机器人. 环境要求: Windows / Li ...

  8. 你的网购价格监督利器——python+爬虫+微信机器人

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:风,又奈何 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...

  9. Python创建微信机器人

    微信,一个日活10亿的超级app,不仅在国内社交独领风骚,在国外社交也同样占有一席之地,今天我们要将便是如何用Python来生成一个微信机器人,突然想起鲁迅先生曾经说过的一句话:因为是微信机器人系列的 ...

随机推荐

  1. [Reversing.kr] Easy ELF Writeup

    IDA打开,看到main()函数,当sub_8048451() 返回1 是flag正确. 跟踪函数. 脚本: #!usr/bin/env python #!coding=utf-8 __author_ ...

  2. SpringBoot启动如何加载application.yml配置文件

    一.前言 在spring时代配置文件的加载都是通过web.xml配置加载的(Servlet3.0之前),可能配置方式有所不同,但是大多数都是通过指定路径的文件名的形式去告诉spring该加载哪个文件: ...

  3. 机器学习 GBDT+xgboost 决策树提升

    目录 xgboost CART(Classify and Regression Tree) GBDT(Gradient Boosting Desicion Tree) GB思想(Gradient Bo ...

  4. RabbitMQ学习笔记(二) 工作队列

    什么是工作队列? 工作队列(又名任务队列)是RabbitMQ提供的一种消息分发机制.当一个Consumer实例正在进行资源密集任务的时候,后续的消息处理都需要等待这个实例完成正在执行的任务,这样就导致 ...

  5. Java基础20:Java8新特性终极指南

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  6. cmake安装配置及入门指南

    前言 今天,从github下载代码学习,让我用cmake编译,纳尼?make我知道,cmake是啥鬼?天啊,无知很可怕!赶紧mark一波,虽然很耽误学习进度,但感觉还是要get一波! 一.安装准备 感 ...

  7. MySQL 索引及查询优化总结

    本文由云+社区发表 文章<MySQL查询分析>讲述了使用MySQL慢查询和explain命令来定位mysql性能瓶颈的方法,定位出性能瓶颈的sql语句后,则需要对低效的sql语句进行优化. ...

  8. [React] react+redux+router+webpack+antd环境搭建一版

    好久之前搭建的一个react执行环境,受历史影响是webpack3.10.0和webpack-dev-server2.7.1的环境,新项目准备用webpack4重新弄弄了,旧的记录就合并发布了(在没有 ...

  9. 痞子衡嵌入式:常用的数据差错控制技术(1)- 重复校验(Repetition Code)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式里数据差错控制技术-重复校验. 在嵌入式应用里,除了最核心的数据处理外,我们还会经常和数据传输打交道.数据传输需要硬件传输接口的支持 ...

  10. [SDOI2018] 战略游戏

    Description 给定一张 \(n\) 个点 \(m\) 条边的无向联通图,共有 \(q\) 次操作,每次操作选择一些点作为关键点,询问有多少个点满足删去该点及与其相邻的边后,至少有两个关键点不 ...