对于职场人士来说,微信已经成为了一种工作工具,领导微信私聊布置工作任务,各种微信群里也不时会发布一些工作信息,一不小心,就会漏接一些重要的通知和任务。而且有时候工作忙起来,忙完一轮,打开微信,铺天盖地的信息迎面而来,不知道哪些是闲聊,哪些是工作任务 ,又要一条条去翻,费时费力。 我自己也是经常漏接微信信息,为了尽量避免这种情况的出现,本着人生苦短我用python的原则,使用itchat库撸了代码实现自动回复好友私聊和群聊中@我的信息,同时将相关的私聊,@我的信息转存到微信的文件助手中。
使用方法
要使用代码 首先要安装python3,并使用pip3 install itchat
安装itchat库。
运行代码后,程序会自动下载一个二维码图片,使用微信扫一扫扫取二维码图片,实现登录后,保持程序运行,即可实现上述功能。
代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time : 2020/2/1 15:46
# @Author : karinlee
# @FileName : wechat_autoreply_v2.0.py
# @Software : PyCharm
# @Blog : https://blog.csdn.net/weixin_43972976
"""
本模块使用itchat库,实现微信消息自动收集并回复,群聊@我自动回复功能
"""
import itchat
# from itchat.content import *
import time
# 自动回复
# 封装好的装饰器,当接收到的消息是Text,即文字消息
# @itchat.msg_register('Text')
# 封装好的装饰器,当接收到的消息是[TEXT, PICTURE,SHARING,ATTACHMENT,VIDEO]
# 对于不同消息的类型,采取不同的处理方法
# from itchat.content import *
# ==================================itchat.content=======================================
# TEXT = 'Text'
# MAP = 'Map'
# CARD = 'Card'
# NOTE = 'Note'
# SHARING = 'Sharing'
# PICTURE = 'Picture'
# RECORDING = VOICE = 'Recording'
# ATTACHMENT = 'Attachment'
# VIDEO = 'Video'
# FRIENDS = 'Friends'
# SYSTEM = 'System'
#
# INCOME_MSG = [TEXT, MAP, CARD, NOTE, SHARING, PICTURE,
# RECORDING, VOICE, ATTACHMENT, VIDEO, FRIENDS, SYSTEM]
# =======================================================================================
# 引入后可使用itchat.content里面的常量,但也可以不引入 直接用字符串注册
# @itchat.msg_register([TEXT, PICTURE,RECORDING,ATTACHMENT,SHARING,VIDEO])
def wechat_autoreply():
@itchat.msg_register(['Text', 'Picture','Recording','Sharing','Attachment','Video'])
def text_reply(msg):
"""
用于微信私聊自动回复
"""
# 对于不同类型的信息,我们要记录不同的内容来回复,
# 普通文本
if msg['Type'] == 'Text':
reply_message = "信息: \n\n" + msg['Text']
# 图片,记录图片的名字,FileName这个键值可以表示图片,音频视频的名字
elif msg['Type'] == 'Picture':
reply_message = ":图片 -> " + msg['FileName']
elif msg['Type'] == 'Recording':
reply_message = ":语音 -> "
elif msg['Type'] == 'Sharing':
reply_message = ":分享链接 -> "
elif msg['Type'] == 'Attachment':
reply_message = ":文件 -> " + msg['FileName']
elif msg['Type'] == 'Video':
reply_message = ":视频 -> " + msg['FileName']
else:
reply_message = ":[信息]"
# 当消息不是由自己发出的时候
if not msg['FromUserName'] == my_user_name:
# 发送一条提示给文件助手
itchat.send_msg(u"[%s]\n收到 好友 @%s 的 %s\n" %
(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(msg['CreateTime'])),
msg['User']['NickName'],
reply_message), toUserName='filehelper')
# 回复给好友
return u'[自动回复]本人微信目前处于python托管状态,您的消息已被自动记录。\n已经收到您的%s\n\n稍后我将回复您[微笑]' % (reply_message)
# 在注册时增加isGroupChat=True将判定为群聊回复
@itchat.msg_register('Text', isGroupChat=True)
def groupchat_reply(msg):
"""
用于微信群聊@我自动回复
"""
if msg['Type'] == 'Text':
reply_message = "信息 : \n\n" + msg['Text']
# 当消息不是由自己发出的时候
if not msg['FromUserName'] == my_user_name:
if msg['isAt']:
# itchat.send(u'@%s\u2005I received: %s' % (msg['ActualNickName'], msg['Content']), msg['FromUserName'])
itchat.send_msg(u"[%s]\n收到 群聊 [%s] 好友[%s] 的 %s\n" %
(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(msg['CreateTime'])), # 格式化时间
msg['User']['NickName'], # 群聊名称
msg['ActualNickName'], # 好友备注名
reply_message), toUserName='filehelper')
# 回复给好友
return u'[自动回复]本人微信目前处于python托管状态,您@我的消息已被自动记录。\n已经收到您的%s\n\n稍后我将回复您[微笑]' % (reply_message)
#登录微信
itchat.auto_login()
# 获取自己的user_name
my_user_name = itchat.get_friends(update=True)[0]["UserName"]
#开始运行
itchat.run()
if __name__ == '__main__':
wechat_autoreply()