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 文件操作技巧(File operation) 实例代码分析
Aug 11 Python
python生成指定长度的随机数密码
Jan 23 Python
Python的dict字典结构操作方法学习笔记
May 07 Python
python基于phantomjs实现导入图片
May 13 Python
Django卸载之后重新安装的方法
Mar 15 Python
Python中查看文件名和文件路径
Mar 31 Python
python 获得任意路径下的文件及其根目录的方法
Feb 16 Python
python 执行终端/控制台命令的例子
Jul 12 Python
基于Tensorflow使用CPU而不用GPU问题的解决
Feb 07 Python
python3实现飞机大战
Nov 29 Python
Python 中的 copy()和deepcopy()
Nov 07 Python
python中的3种定义类方法
Nov 27 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 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
php 问卷调查结果统计
2015/10/08 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
详解webpack loader和plugin编写
2018/10/12 Javascript
vue基础之事件v-onclick="函数"用法示例
2019/03/11 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
python实现飞机大战微信小游戏
2020/03/21 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
如何用Python 加密文件
2020/09/10 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
Tostadora意大利:定制T恤
2019/04/08 全球购物
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
个人自我评价分享
2013/12/20 职场文书
文明礼仪事迹材料
2014/01/09 职场文书
新闻发布会策划方案
2014/06/12 职场文书
四风自我剖析材料
2014/09/30 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫