目前有一个项目 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库实现自动化回复相关推荐

  1. python微信库we_python微信库we_python操作微信客户端:WechatPCAPI库实现自动化回复...

    目前有一个项目 WechatPCAPI 可以对微信进行操作,简单来说它是直接操作 PC 版微信客户端的,当然它有一定不足之处就是:PC 版微信客户端和 Python 都需要使用指定版本的,本文我们使用 ...

  2. golang常用库之-操作redis go-redis/redis库、 go-redsync/redsync库(redis分布式锁)

    文章目录 golang常用库之-操作redis go-redis/redis库. go-redsync/redsync库(redis分布式锁) 一.什么是go-redis/redis库 go-redi ...

  3. python 标准库 excel_Python 操作 Excel 的函数库

    1. Python 操作 Excel 的函数库 我主要尝试了 3 种读写 Excel 的方法: 1> xlrd, xlwt, xlutils: 这三个库的好处是不需要其它支持,在任何操作系统上都 ...

  4. 计算机操作基本知识题库,计算机操作基础知识题库.doc

    计算机网络考试 计算机操作基础知识题库 一. 单选题(共 59 题) 1. 在 Excel 工作窗口上, " 状态栏" 是在屏幕的( ). A.上面 B. 下面 C. 左面 D. ...

  5. 计算机操作基本知识题库,计算机操作基础知识题库

    计算机操作基础知识题库 (11页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 计算机操作基础知识题库一.单选题(共59题)1.在 Ex ...

  6. python安装itchat库_操作微信-itchat库的安装

    基于pyCharm开发环境,在CMD控制台输入:pip install itchat      等待安装...... Microsoft Windows [版本 6.1.7601] 版权所有 (c) ...

  7. 微信小程序--操作微信自带的返回按钮使上个页面刷新列表或刷新数据

    首先要了解什么是页面栈------------ 框架以栈的形式维护了当前的所有页面. 当发生路由切换的时候,页面栈的表现如下: 路由方式 页面栈表现 初始化 新页面入栈 打开新页面 新页面入栈 页面重 ...

  8. python 微信聊天机器人_python操作微信自动发消息的实现(微信聊天机器人)

    前言 最近在学习python,发现一个微信自动发消息的小demo感觉很有意思,试了一下,不成功,因为demo中用的是itchat这个库来操作微信,而这个库是通过微信网页版来操作微信的,现在微信网页版已 ...

  9. python操作微信自动发消息(微信聊天机器人)

    前言 最近在学习python,发现一个微信自动发消息的小demo感觉很有意思,试了一下,不成功,因为demo中用的是itchat这个库来操作微信,而这个库是通过微信网页版来操作微信的,现在微信网页版已 ...

最新文章

  1. 腾讯云TDSQL数据库核心技术理论取得进展 ,同时发布数据异常检测工具
  2. 印度交通部或禁止无人驾驶汽车进入本土市场
  3. 《数据驱动安全:数据安全分析、可视化和仪表盘》一2.3 数据帧介绍
  4. Liunx安装JDK,tomcat,mysql的依赖包命令
  5. 成功解决keras库中出现AttributeError: ‘str‘ object has no attribute ‘decode‘
  6. [转帖]Sqlcmd使用详解
  7. 《Abaqus GUI程序开发指南(Python语言)》——第一章 概述1.1 简单插件实例——创建带孔板有限元模型...
  8. CentOS6.5安装配置
  9. Cortex-M3中断的具体行为
  10. Android 12 重磅亮相!阔别 2 年的 Google I/O 开发者大会回来了
  11. C# 子类实例化基类 基类使用不了子类的方法_C#中的类、方法和属性
  12. 清除centos上面kde软件的一个脚本,基本好用
  13. SQL JOIN--初级篇
  14. 【深度】专访华宝基金首席信息官李孟恒:搭建数据驱动引擎,开创投研一体新格局
  15. stata绘制地理分布图的spmap命令
  16. 何绍华Linux操作系统第3版章节课后答案习题
  17. 中国曲谱网爬虫研究(Python)
  18. CIO40:家电巨头数字化运营历程(IT-DT-OT)
  19. ap导入 ebs oracle_Oracle EBS Interface/API(1)--AP Invoice费用报表类型导入
  20. 2023复旦大学计算机考研信息汇总

热门文章

  1. 记录接手一个 VUE项目的初始操作
  2. 串口 OVERLAPPED
  3. 机器视觉(相机、镜头、光源)全面概括——mark
  4. 企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提 成7.5%;20万到40万之间时,
  5. 实现选择开区间或闭区间的操作,输出开区间或闭区间 详解(线段树运用)
  6. 嵌入式热敏打印机模块-优库E58T-1玩起来
  7. 两个list合并成一个list的操作方法
  8. Shell Script sed编辑器
  9. 跨平台C语言长连接之quene数据结构
  10. 神经网络基础知识、常用激活函数及其Python图形绘制