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简单获取本机计算机名和IP地址的方法
Jun 03 Python
详谈python read readline readlines的区别
Sep 22 Python
Python读取文件内容的三种常用方式及效率比较
Oct 07 Python
python实现读取excel写入mysql的小工具详解
Nov 20 Python
Python使用Tkinter实现机器人走迷宫
Jan 22 Python
Python使用爬虫爬取静态网页图片的方法详解
Jun 05 Python
Python递归函数实例讲解
Feb 27 Python
python与mysql数据库交互的实现
Jan 06 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
Python尝试实现蒙特卡罗模拟期权定价
Apr 21 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 parse_url 一个好用的函数
2009/10/03 PHP
yii操作cookie实例简介
2014/07/09 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
jQuery使用each方法与for语句遍历数组示例
2016/06/16 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
2016/10/08 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
原生js二级联动效果
2017/06/20 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
Python3数字求和的实例
2019/02/19 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
好军嫂事迹材料
2014/01/15 职场文书
党员教师工作决心书
2014/03/13 职场文书
社区志愿者活动方案
2014/08/18 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
公安机关纪律作风整顿剖析
2014/10/10 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
银行实习推荐信
2015/03/27 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android