300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python微信库we_python微信库we_python操作微信客户端:WechatPCAPI库实现自动化回复...

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

时间:2024-05-27 15:02:12

相关推荐

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

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

获取好友列表

WechatPCAPI 提供了方法 get_friends(),该方法返回信息包括:好友、群和公众号的列表信息,信息内容主要包括:微信号、昵称和自己设置的备注。

我们使用获取的昵称做个简单的词云展示,代码实现如下所示:logging.basicConfig(level=logging.INFO)

defon_message(message):

pass

defget_friends():

#初始化微信实例

wx_inst=WechatPCAPI(on_message=on_message,log=logging)

#启动微信

wx_inst.start_wechat(block=True)

#等待登陆成功,此时需要人为扫码登录微信

whilenotwx_inst.get_myself():

time.sleep(5)

print('登陆成功')

nicknames=[]

#排除的词

remove=['还是','不会','一些','所以','果然',

'起来','东西','为什么','真的','这么',

'但是','怎么','还是','时候','一个',

'什么','自己','一切','样子','一样',

'没有','不是','一种','这个','为了'

]

forkey,valueinwx_inst.get_friends().items():

ifkeyin['fmessage','floatbottle','filehelper']or'chatroom'inkey:

continue

nicknames.append(value['wx_nickname'])

words=[]

fortextinnicknames:

ifnottext:

continue

fortinjieba.cut(text):

iftinremove:

continue

words.append(t)

globalword_cloud

#用逗号隔开词语

word_cloud=','.join(words)

defnk_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

)

globalword_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()

defon_message(msg):

queue_recved_event.put(msg)

deflogin():

pre_msg=''

#初始化微信实例

wx_inst=WechatPCAPI(on_message=on_message,log=logging)

#启动微信

wx_inst.start_wechat(block=True)

#等待登陆成功,此时需要人为扫码登录微信

whilenotwx_inst.get_myself():

time.sleep(5)

print('登陆成功')

whileTrue:

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)

ifdata_type=='1'and'revokemsg'notinmsgcontent:

pre_msg=msgcontent

ifsendinfoisnotNoneand'revokemsg'inmsgcontent:

user=str(sendinfo.get('wx_id_search'))

recall='撤回的消息:' pre_msg

wx_inst.send_text(to_user=user,msg=recall)

看一下操作

更多python相关内容,请关注python自学网。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。