python微信库we_python操作微信客户端:WechatPCAPI库实现自动化回复
目前有一个项目 WechatPCAPI 可以对微信进行操作,简单来说它是直接操作 PC 版微信客户端的,当然它有一定不足之处就是:PC 版微信客户端和 Python 都需要使用指定版本的,本文我们使用的 Python 版本为 3.7.6 ,微信客户端使用版本为 2.6.8.52 ,WechatPCAPI 的 GitHub 地址为: https://github.com/Mocha-L/WechatPCAPI。
获取好友列表
WechatPCAPI 提供了方法 get_friends(),该方法返回信息包括:好友、群和公众号的列表信息,信息内容主要包括:微信号、昵称和自己设置的备注。
我们使用获取的昵称做个简单的词云展示,代码实现如下所示:logging.basicConfig(level=logging.INFO)
def on_message(message):
pass
def get_friends():
# 初始化微信实例
wx_inst = WechatPCAPI(on_message=on_message, log=logging)
# 启动微信
wx_inst.start_wechat(block=True)
# 等待登陆成功,此时需要人为扫码登录微信
while not wx_inst.get_myself():
time.sleep(5)
print('登陆成功')
nicknames = []
# 排除的词
remove = ['还是', '不会', '一些', '所以', '果然',
'起来', '东西', '为什么', '真的', '这么',
'但是', '怎么', '还是', '时候', '一个',
'什么', '自己', '一切', '样子', '一样',
'没有', '不是', '一种', '这个', '为了'
]
for key, value in wx_inst.get_friends().items():
if key in ['fmessage', 'floatbottle', 'filehelper'] or 'chatroom' in key:
continue
nicknames.append(value['wx_nickname'])
words = []
for text in nicknames:
if not text:
continue
for t in jieba.cut(text):
if t in remove:
continue
words.append(t)
global word_cloud
# 用逗号隔开词语
word_cloud = ','.join(words)
def nk_cloud():
# 打开词云背景图
cloud_mask = np.array(Image.open('bg.png'))
# 定义词云的一些属性
wc = WordCloud(
# 背景图分割颜色为白色
background_color='white',
# 背景图样
mask=cloud_mask,
# 显示最大词数
max_words=300,
# 显示中文
font_path='./fonts/simkai.ttf',
# 最大尺寸
max_font_size=70
)
global word_cloud
# 词云函数
x = wc.generate(word_cloud)
# 生成词云图片
image = x.to_image()
# 展示词云图片
image.show()
# 保存词云图片
wc.to_file('nk.png')
看一下效果:
消息防撤回
我们在使用微信和好友聊天时,对方有时会有撤回消息的情况,正常情况下,我们是不知道好友撤回的消息是什么的,通过 WechatPCAPI 就可以实现消息防撤回的功能。
我们知道通常撤回的消息是点击撤回操作前一步发送的内容,当然也可能撤回的是前两步、三步 ... 的消息,这里我们只对撤回前一步的消息做处理,基本思路是:我们将撤回前一步发送的消息存一下,当对方点击撤回操作时,我们再将前一步的消息再次返回给自己。
下面看一下实现代码:logging.basicConfig(level=logging.INFO)
queue_recved_event = Queue()
def on_message(msg):
queue_recved_event.put(msg)
def login():
pre_msg = ''
# 初始化微信实例
wx_inst = WechatPCAPI(on_message=on_message, log=logging)
# 启动微信
wx_inst.start_wechat(block=True)
# 等待登陆成功,此时需要人为扫码登录微信
while not wx_inst.get_myself():
time.sleep(5)
print('登陆成功')
while True:
msg = queue_recved_event.get()
data = msg.get('data')
sendinfo = data.get('sendinfo')
data_type = str(data.get('data_type'))
msgcontent = str(data.get('msgcontent'))
is_recv = data.get('is_recv')
print(msg)
if data_type == '1' and 'revokemsg' not in msgcontent:
pre_msg = msgcontent
if sendinfo is not None and 'revokemsg' in msgcontent:
user = str(sendinfo.get('wx_id_search'))
recall = '撤回的消息:' pre_msg
wx_inst.send_text(to_user=user, msg=recall)
看一下操作
更多python相关内容,请关注python自学网。
python微信库we_python操作微信客户端:WechatPCAPI库实现自动化回复相关推荐
- python微信库we_python微信库we_python操作微信客户端:WechatPCAPI库实现自动化回复...
目前有一个项目 WechatPCAPI 可以对微信进行操作,简单来说它是直接操作 PC 版微信客户端的,当然它有一定不足之处就是:PC 版微信客户端和 Python 都需要使用指定版本的,本文我们使用 ...
- golang常用库之-操作redis go-redis/redis库、 go-redsync/redsync库(redis分布式锁)
文章目录 golang常用库之-操作redis go-redis/redis库. go-redsync/redsync库(redis分布式锁) 一.什么是go-redis/redis库 go-redi ...
- python 标准库 excel_Python 操作 Excel 的函数库
1. Python 操作 Excel 的函数库 我主要尝试了 3 种读写 Excel 的方法: 1> xlrd, xlwt, xlutils: 这三个库的好处是不需要其它支持,在任何操作系统上都 ...
- 计算机操作基本知识题库,计算机操作基础知识题库.doc
计算机网络考试 计算机操作基础知识题库 一. 单选题(共 59 题) 1. 在 Excel 工作窗口上, " 状态栏" 是在屏幕的( ). A.上面 B. 下面 C. 左面 D. ...
- 计算机操作基本知识题库,计算机操作基础知识题库
计算机操作基础知识题库 (11页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 计算机操作基础知识题库一.单选题(共59题)1.在 Ex ...
- python安装itchat库_操作微信-itchat库的安装
基于pyCharm开发环境,在CMD控制台输入:pip install itchat 等待安装...... Microsoft Windows [版本 6.1.7601] 版权所有 (c) ...
- 微信小程序--操作微信自带的返回按钮使上个页面刷新列表或刷新数据
首先要了解什么是页面栈------------ 框架以栈的形式维护了当前的所有页面. 当发生路由切换的时候,页面栈的表现如下: 路由方式 页面栈表现 初始化 新页面入栈 打开新页面 新页面入栈 页面重 ...
- python 微信聊天机器人_python操作微信自动发消息的实现(微信聊天机器人)
前言 最近在学习python,发现一个微信自动发消息的小demo感觉很有意思,试了一下,不成功,因为demo中用的是itchat这个库来操作微信,而这个库是通过微信网页版来操作微信的,现在微信网页版已 ...
- python操作微信自动发消息(微信聊天机器人)
前言 最近在学习python,发现一个微信自动发消息的小demo感觉很有意思,试了一下,不成功,因为demo中用的是itchat这个库来操作微信,而这个库是通过微信网页版来操作微信的,现在微信网页版已 ...
最新文章
- 腾讯云TDSQL数据库核心技术理论取得进展 ,同时发布数据异常检测工具
- 印度交通部或禁止无人驾驶汽车进入本土市场
- 《数据驱动安全:数据安全分析、可视化和仪表盘》一2.3 数据帧介绍
- Liunx安装JDK,tomcat,mysql的依赖包命令
- 成功解决keras库中出现AttributeError: ‘str‘ object has no attribute ‘decode‘
- [转帖]Sqlcmd使用详解
- 《Abaqus GUI程序开发指南(Python语言)》——第一章 概述1.1 简单插件实例——创建带孔板有限元模型...
- CentOS6.5安装配置
- Cortex-M3中断的具体行为
- Android 12 重磅亮相!阔别 2 年的 Google I/O 开发者大会回来了
- C# 子类实例化基类 基类使用不了子类的方法_C#中的类、方法和属性
- 清除centos上面kde软件的一个脚本,基本好用
- SQL JOIN--初级篇
- 【深度】专访华宝基金首席信息官李孟恒:搭建数据驱动引擎,开创投研一体新格局
- stata绘制地理分布图的spmap命令
- 何绍华Linux操作系统第3版章节课后答案习题
- 中国曲谱网爬虫研究(Python)
- CIO40:家电巨头数字化运营历程(IT-DT-OT)
- ap导入 ebs oracle_Oracle EBS Interface/API(1)--AP Invoice费用报表类型导入
- 2023复旦大学计算机考研信息汇总
热门文章
- 记录接手一个 VUE项目的初始操作
- 串口 OVERLAPPED
- 机器视觉(相机、镜头、光源)全面概括——mark
- 企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提 成7.5%;20万到40万之间时,
- 实现选择开区间或闭区间的操作,输出开区间或闭区间 详解(线段树运用)
- 嵌入式热敏打印机模块-优库E58T-1玩起来
- 两个list合并成一个list的操作方法
- Shell Script sed编辑器
- 跨平台C语言长连接之quene数据结构
- 神经网络基础知识、常用激活函数及其Python图形绘制