python实现微信小程序自动回复


Posted in Python onSeptember 10, 2018

本文是使用Python的itchat模块进行微信私聊消息以及群消息的自动回复功能,必须在自己的微信中添加微信号xiaoice-ms(微软的微信机器人)才能实现,直接复制代码运行之后扫一扫二维码即可,经过测试,该程序能够保持几小时的时间。

实现原理,将别人发送给你的消息转发给AI小冰,然后再将AI的回复转回给那个人。

群消息也是如此,此外还添加了新年问候语,是否与他人进行AI聊天等功能。不过只能实现文本消息以及微信自带表情的转发,不能转发表情、语音等。

# -*-coding:utf-8-*-
import itchat
import itchat.content as itcontent

# 登录网页微信,hotReload=True 能让登录时间加长
itchat.auto_login(hotReload=True)

# 记录公众号机器人小冰的UserName
mps = itchat.search_mps(name='小冰')
AI = mps[0]['UserName']
# print(AI)

# 记录自己的UserName,不然发送消息会发两遍
username = itchat.get_friends()
user = username[0]['UserName']
# print(username)

# 记录好友列表里好友的 UserName
friendsname = [friend['UserName'] for friend in username if friend['UserName'] != user]
# print(friendsname)

groupname = itchat.get_chatrooms()
groups = [group['UserName'] for group in groupname]


# 这个说来话长~~,有兴趣的可以去上网查查
@itchat.msg_register(itcontent.TEXT, isFriendChat=True, isMpChat=True, isGroupChat=True)
def simple_reply(msg, FriendList=[]):
  Fromuser = msg['FromUserName']

  # 如果是AI而且列表不为空,就将AI发给自己的消息转发给发送消息者
  if msg['FromUserName'] == AI and FriendList:
    # print(msg['FromUserName'])
    itchat.send(msg['Text'], toUserName=FriendList[-1])

  elif Fromuser in friendsname:
    if '新年' in msg['Text']:
      return '新年快乐,祝您身体健康,万事胜意。'

    # 记录发送消息者入FriendList中
    elif Fromuser not in FriendList and msg['Text'] == '小小冰真漂亮':
      FriendList.append(Fromuser)
      return '通信建立成功'

    # 第一次发送消息过来,回复以下内容
    elif Fromuser in FriendList:
      if msg['Text'] in ['小小冰再见', '小小冰晚安', '小小冰下次聊']:
        FriendList.remove(Fromuser)
        return '再见,和您聊天十分开心,希望您今天过得愉快!'
      else:
        FriendList.append(Fromuser)
        itchat.send(msg['Text'], toUserName=AI)

    else:
      text = '''Mr.D先生现在不在,我是助手AI,有要事请拨打号码:xxxxxxxxxxx。如果想和我聊天,那就大声地说"小小冰真漂亮
            (回复‘小小冰再见/小小冰晚安/小小冰下次聊'可结束此次聊天。)"'''
      return text

  elif Fromuser in groups:
    if msg.isAt:
      if '新年' in msg['Content']:
        return '新年快乐,祝您身体健康,万事胜意。'
      elif Fromuser not in FriendList and msg['Content'] == '小小冰真漂亮':
        FriendList.append(Fromuser)
        return '通信建立成功'
      elif Fromuser in FriendList:
        if msg['Content'] in ['小小冰再见', '小小冰晚安', '小小冰下次聊']:
          FriendList.remove(Fromuser)
          return '再见,和您聊天十分开心,希望您今天过得愉快!'
        else:
          FriendList.append(Fromuser)
          itchat.send(msg['Content'], toUserName=AI)
      else:
        text = '''Mr.D先生现在不在,我是助手AI,有要事请拨打号码:xxxxxxxxxxx。如果想和我聊天,那就大声地说"小小冰真漂亮
            (回复‘小小冰再见/小小冰晚安/小小冰下次聊'可结束此次聊天。)"'''
        return text

    elif msg['Text'] == '小小冰真漂亮':
      FriendList.append(Fromuser)
      return '通信建立成功'

    elif Fromuser in FriendList:
      if msg['Text'] in ['小小冰再见', '小小冰晚安', '小小冰下次聊']:
        FriendList.clear()
        return '再见,和您聊天十分开心,希望您今天过得愉快!'
      elif '新年' in msg['Text']:
        return '新年快乐,祝您身体健康,万事胜意。'
      else:
        FriendList.append(Fromuser)
        itchat.send(msg['Text'], toUserName=AI)

        # 如果是自己发送消息,则清空列表
  elif Fromuser == user:
    FriendList.clear()

  # 其他公众号信息,就通知一声给微信文件助手
  else:
    itchat.send('公众号信息', toUserName='filehelper')


@itchat.msg_register([itcontent.PICTURE, itcontent.RECORDING, itcontent.VIDEO, itcontent.MAP], isFriendChat=True,
           isGroupChat=True, isMpChat=True)
def return_text(msg):
  text = '我不具备识别语音与图片等功能,请说普通话。'
  return text


itchat.run()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python输出一个杨辉三角的例子
Jun 13 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
Nov 14 Python
Python构建网页爬虫原理分析
Dec 19 Python
Python 3.6 读取并操作文件内容的实例
Apr 23 Python
python基于socket进行端口转发实现后门隐藏的示例
Jul 25 Python
python编写简单端口扫描器
Sep 04 Python
Python pip配置国内源的方法
Feb 14 Python
Python全面分析系统的时域特性和频率域特性
Feb 26 Python
浅谈Python的方法解析顺序(MRO)
Mar 05 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 Python
Python 数据可视化之Bokeh详解
Nov 02 Python
python中map的基本用法示例
Sep 10 #Python
python2 与 pyhton3的输入语句写法小结
Sep 10 #Python
django DRF图片路径问题的解决方法
Sep 10 #Python
详解python中Numpy的属性与创建矩阵
Sep 10 #Python
tensorflow使用神经网络实现mnist分类
Sep 08 #Python
Python unittest单元测试框架总结
Sep 08 #Python
tensorflow实现加载mnist数据集
Sep 08 #Python
You might like
PHP mkdir()定义和用法
2009/01/14 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
php面向对象值单例模式
2016/05/03 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
window.open的功能全解析
2006/10/10 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
基于JS实现仿京东搜索栏随滑动透明度渐变效果
2017/07/10 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
React 高阶组件入门介绍
2018/01/11 Javascript
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
Vue.js组件props数据验证实现详解
2019/10/19 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
Python中文编码知识点
2019/02/18 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
大学生自我鉴定
2013/12/08 职场文书
高校辅导员推荐信范文
2013/12/25 职场文书
读书伴我成长演讲稿
2014/05/07 职场文书
农村党员一句话承诺
2014/05/30 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
导游词之青城山景区
2019/09/27 职场文书
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis