Python微信小程序,实现自动回复等功能(itchat模块)

2023-05-16

本文是使用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()  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python微信小程序,实现自动回复等功能(itchat模块) 的相关文章

  • 树莓派3B+(Raspberry Pi 3 Model B+)安装Ubuntu MATE 18.04及简单配置

    树莓派3B 43 安装Ubuntu MATE 18 04及简单配置 安装Ubuntu18 04 MATE下载Ubuntu 18 04 MATE准备Raspberry Pi Imager镜像烧录工具开机启动 简单配置设置root密码更新列表配
  • OpenCV之getOptimalNewCameraMatrix

    去畸变后的图像四周会出现黑色区域 xff0c 如果畸变较大 xff0c 如鱼眼镜头 xff0c 四周黑色区域将会更大 opencv中给我们提供了一个函数getOptimalNewCameraMatrix xff0c 用于去除畸变矫正后图像四
  • 【深度学习小常识】什么是mAP?

    目录 一 mAP相关概念 1 正例与负例 2 P xff08 精确率 xff09 3 R xff08 召回率 xff09 4 ACC xff08 准确率 xff09 5 AP xff08 平均精确度 xff09 6 示例 二 mAP 1 m
  • STM32CubeMX 下载和安装 详细教程

    HAL库 STM32CubeMX开发 STM32F407 目录 STM32CubeMX安装包 Win 6 6 1 下载链接 STM32CubeMX 下载 步骤1 xff1a 点击官网链接下载 官网下载地址 xff1a https www s
  • Keil5----跳转定义和查找功能

    一 Keil5 跳转定义 跳转定义 鼠标左键点击要查找的变量 方法1 xff1a 点击鼠标右键 xff0c 功能栏中有跳转定义的选项 方法2 xff1a 按快捷键 F12 具体操作如下图所示 xff1a 跳转结果 二 Keil5 查找功能
  • 使用WIFI模块AT指令进行MQTT协议通信

    劢领系列模组 xff0c 经过1年多的演化后 xff0c 已存在多套标准的固件程序 如果用户需要使用MQTT方式进行通信 xff0c 则需要选择标准AT指令 43 MQTT的版本 此版本不仅可以支持标准AT指令的SOCKET通信 xff0c
  • ActiveMQ配置wss

    最近把前端页面由原来的http升级为了https xff0c 发现之前ActiveMQ提供的ws不能强求了 xff0c https服务下要求升级到wss 全网搜索了下 xff0c 没有找到一个靠谱的文档 一 证书准备 使用wss连接服务必须
  • stm32使用HAL库快速编写智能寻迹避障小车(附代码)

    最近学校安排了一节用stm32编写寻迹避障小车的课 xff0c 但无奈学校老师教的方法让作者觉得无法理解 xff0c 但课程答辩时间快到了 xff0c 组内小组成员又做的磕磕绊绊 xff0c 于是身为组长的我就决定尝试一下用刚学的cubem
  • [hal库]使用 CubeMX 快速生成 FreeRTOS 系统并实现多任务处理

    由于项目需求 xff0c 需要使用FREERTOS搭载轻量系统 xff0c 因此写此博客给大家提供一个快速搭建RTOS系统的方法 xff0c 通过cubemx快速生成 以下内容包括 xff1a FreeRTOS 简介 程序框图所需要的元器件
  • Windows C/C++ CLion 开发环境搭建

    博文目录 文章目录 IDE CLion安装设置MinGW 插件测试 特殊配置 使用 CLion 开发 C 43 43 CUDA 应用注意不要走如下弯路 IDE CLion 安装 官网 官方全版本下载 CLion 2021 2 3 exe 或
  • git常见报错解决办法,fatal: the remote end hung up unexpectedly

    问题一 xff1a 上传GIT项目报fatal the remote end hung up unexpectedly错误 上传项目报fatal the remote end hung up unexpectedly的错误 xff0c 应该
  • AtCoder从小白到大神的进阶攻略

    摘自https www cnblogs com LHYLHY p 11572011 html 在此对作者表示感谢 AtCoder从小白到大神的进阶攻略 前言 现在全球最大的编程比赛记分网站非CodeForces和AtCoder莫属了 xff
  • 2020java面试总结

    博主背景 xff1a 92年生 xff0c 渣本毕业 xff0c java岗 xff0c 经验接近6年 xff0c base上海 本文宗旨 xff1a 本文旨在将博主最近的面试经历分享给大家 xff0c 并作些总结 xff0c 尽量为在准备
  • odroid上mavros指定版本安装

    mavros 安装 指定版本 xff1a 0 16 0 https github com mavlink mavros 以下是可能出现的错误 error1 can t find mavlinkConfig cmake solution ht
  • FreeRTOS源码解析 -> vTaskDelete()

    vTaskDelete API 函数 任务可以使用API函数vTaskDelete 删除自己或其它任务 任务被删除后就不复存在 xff0c 也不会再进入运行态 空闲任务的责任是要将分配给已删除任务的内存释放掉 因此有一点很重要 xff0c
  • 设置华为交换机使用账号密码方式进行SSH登录

    1 创建rsa本地密钥对与创建账号 Huawei rsa local key pair create The key name will be Huawei Host The range of public key size is 512
  • java中反射有什么作用?

    前言 反射blog有很多 xff0c 不再赘述 xff0c 但是反射的作用具体实现场景就会比较少 xff0c 这里举个例子 一个需求 使用参数的方式传入需要执行的类名 xff0c 然后执行相应类的同名方法 普通的实现方法 静态加载 因为需要
  • 解决:本地Kafka和Druid的Zookeeper端口冲突问题

    主要是完成本地的Kafka和Druid搭建过程中 xff0c 出现的Cannot start up because port 2181 is already in use 问题 问题原因 xff1a 使用brew安装的的Druid也是自带z
  • 解决:Scala反射中Boolean等值类型 type mismatch 问题

    描述问题 使用 scala 反射过程中 xff0c 传入为值类型 xff0c 比如Boolean时 xff0c 会出现类型不匹配的情况 type mismatch found Boolean true required Object xxx
  • 将自己的python程序打包成.exe/.app(秀同学一脸呐)

    Windows 10 x64 macOS Sierra 10 12 4 Python 2 7 准备好装哔 了么 xff0c 来吧 xff0c 做个真正意义上的绿色小软件 Win下发布应用 起因 今天实验室同学看到我的乞丐版二输入规则器 xf

随机推荐