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判断操作系统类型代码分享
Nov 22 Python
用生成器来改写直接返回列表的函数方法
May 25 Python
python编写分类决策树的代码
Dec 21 Python
python在openstreetmap地图上绘制路线图的实现
Jul 11 Python
python增加图像对比度的方法
Jul 12 Python
详解python中的index函数用法
Aug 06 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
Django 返回json数据的实现示例
Mar 05 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
利用python对mysql表做全局模糊搜索并分页实例
Jul 12 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
Aug 17 Python
python使用ctypes库调用DLL动态链接库
Oct 22 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实现随机生成易于记忆的密码
2015/06/19 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
详解Document.Cookie
2015/12/25 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
Python断言assert的用法代码解析
2018/02/03 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
tensorflow 环境变量设置方式
2020/02/06 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
Python中有几个关键字
2020/06/04 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
Ajax的工作原理
2015/12/04 面试题
yy司仪主持词
2014/03/22 职场文书
家长通知书教师评语
2014/04/17 职场文书
大学生个人求职信
2014/06/02 职场文书
详解Python描述符的工作原理
2021/06/11 Python
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL