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之大话题小函数(2)
Oct 10 Python
在Python的Flask框架中使用日期和时间的教程
Apr 21 Python
介绍Python中的文档测试模块
Apr 28 Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
python绘制铅球的运行轨迹代码分享
Nov 14 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
python序列化与数据持久化实例详解
Dec 20 Python
python,Java,JavaScript实现indexOf
Sep 09 Python
python实现大文本文件分割成多个小文件
Apr 20 Python
Python实现查询剪贴板自动匹配信息的思路详解
Jul 09 Python
Python获取指定日期是"星期几"的6种方法
Mar 13 Python
Python软件包安装的三种常见方法
Jul 07 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
PHP中is_file()函数使用指南
2015/05/08 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
JS 进度条效果实现代码整理
2011/05/21 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
jQuery操作基本控件方法实例分析
2015/12/31 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
linux 下实现python多版本安装实践
2014/11/18 Python
Python的Flask框架与数据库连接的教程
2015/04/20 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
python变量的存储原理详解
2019/07/10 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
医学护理系毕业生求职信
2013/10/01 职场文书
自考自我鉴定范文
2013/10/30 职场文书
2014三八妇女节活动总结
2014/03/01 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
小学教师寄语大全
2014/04/03 职场文书
保护野生动物倡议书
2014/05/16 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
党员公开承诺书2015
2015/01/21 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书
python 命令行传参方法总结
2021/05/25 Python
Feign调用传输文件异常的解决
2021/06/24 Java/Android
基于Redission的分布式锁实战
2022/08/14 Redis