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实现list反转实例汇总
Nov 11 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
详谈Python高阶函数与函数装饰器(推荐)
Sep 30 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
May 24 Python
python学生信息管理系统(完整版)
Apr 05 Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 Python
Django学习之文件上传与下载
Oct 06 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
python中子类与父类的关系基础知识点
Feb 02 Python
asyncio异步编程之Task对象详解
Mar 13 Python
进行数据处理的6个 Python 代码块分享
Apr 06 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
一些 PHP 管理系统程序中的后门
2009/08/05 PHP
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
使用BootStrap实现标签切换原理解析
2017/03/14 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
Python descriptor(描述符)的实现
2020/11/15 Python
如何用python 操作zookeeper
2020/12/28 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
运动会解说词50字
2014/01/18 职场文书
日语专业个人求职信范文
2014/02/02 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android