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的几条建议分享
Feb 10 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
Nov 23 Python
Python装饰器(decorator)定义与用法详解
Feb 09 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
Python3日期与时间戳转换的几种方法详解
Jun 04 Python
python中dict使用方法详解
Jul 17 Python
python logging添加filter教程
Dec 24 Python
django实现将后台model对象转换成json对象并传递给前端jquery
Mar 16 Python
python如何利用Mitmproxy抓包
Oct 10 Python
python中把元组转换为namedtuple方法
Dec 09 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 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
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
js模拟滚动条(横向竖向)
2013/02/22 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
jQuery中scrollTop()方法用法实例
2015/01/16 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
Python 12306抢火车票脚本
2018/02/07 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
Python如何实现在字符串里嵌入双引号或者单引号
2020/03/02 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
英语专业毕业生自我鉴定
2013/11/09 职场文书
会展中心部门工作职责
2013/11/27 职场文书
《画家乡》教学反思
2014/04/22 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
毕业感言怎么写
2015/07/31 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
Java如何实现树的同构?
2021/06/22 Java/Android
Python列表的索引与切片
2022/04/07 Python