上一期我们安装了ItChat,学习使用它登录微信。想知道它还能做什么?向下滑动~接收好友信息使用ItChat登录微信后,我们可以自动记录好友发送的信息。话不多说,直接上传代码:importitchatfromitchat.contentimportTEXT@itchat.msg_register([TEXT])deftext_reply(msg):#whosentwhatmessagesender_name=msg['User']['NickName']content=str(msg['Text'])print('{}sentyouamessage:{}'.format(sender_name,content))运行后,如果有朋友发消息,控制台会输出类似下面Message:如果要自动记录好友的消息,首先要注册一个方法,用itchat.msg_register()装饰一下。请注意,要接收文本信息,必须将[TEXT]等参数传递给此装饰器。当好友发送消息时,会自动进入text_reply方法,这条消息的所有信息都在msg对象中。如代码所示,可以从此对象中检索发件人的昵称和发送的内容。最后,程序会在命令提示符中打印出一条消息,格式为“谁给你发了什么样的消息”。但是当好友发送的消息不是纯文本时,上面的代码是无法捕获的。好在功能强大的ItChat不仅支持接收短信,还可以接收图片、分享链接、位置等类型的消息。您可以通过如下声明自动接收其他类型的消息:@itchat.msg_register([TEXT,MAP,CARD,NOTE,SHARING])deftext_reply(msg):pass当然,如果你想支持其他类型的消息,还需要提前导入这些消息类型:fromitchat.contentimportTEXT,MAP,CARD,NOTE,SHARING或者如果你想偷懒,可以像我一样一次性全部导入:fromitchat.contentimport*这样,大多数朋友发来的消息都可以输入我们的代码。输入代码后,我们可以做很多事情。比如有朋友给我分享一篇文章,可以抓取代码在控制台输出:当然msg对象中也有对应的URL信息,有兴趣的同学可以自行探索。缓存好友信息由于我们的需求只是缓存好友最近几分钟发送的信息,所以不需要使用那些专业的数据库,甚至不需要存储在本地文件中。相反,一个简单的字典就可以满足要求。有时我们使用“文件传输助手”来传输信息。我们不关心这部分信息,代码必须能够处理这个异常。代码如下:importitchatfromitchat.contentimport*importtimelog={}@itchat.msg_register([TEXT,MAP,CARD,NOTE,SHARING])deftext_reply(msg):timestamp=time.time()formatted_timestamp=time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(timestamp))#为了程序的健壮性,避免由于msg['User']没有一个'NickName'keyif'NickName'inmsg['User']:sender_name=msg['User']['NickName']ifsender_name!='filehelper':content=str(msg['Text'])print('{},{}Incomingmessage:{}'.format(formatted_timestamp,sender_name,content))ifsender_namenotinlog:log[sender_name]={}log[sender_name][timestamp]=content简单解释一下上面的代码.首先,需要初始化一个全局的消息日志字典——log。字典的每个键都是发送消息的朋友的昵称,它的值也是一个字典。该词典以收到消息时刻的时间戳为键,以时间戳对应的信息内容为值。这样的设计使得以后更容易找到撤回的消息。有些消息可能没有昵称键。为了增加程序的健壮性,需要提前判断msg['User']。判断是否为文件传输助手(filehelper)。如果没有,会报如下错误:如果朋友第一次发消息,日志字典中没有这个key。直接插入字典会出错,所以需要先判断key是否已经存在。现在让我们测试一下。先用一个账号给自己发一条消息:然后撤回:同时控制台输出:Nextissuenotice在上面的例子中,我们很容易知道撤回消息的内容是什么。但是这需要我们一个一个的看,太累了。作为一个程序员,怎么能让自己活得这么累!那么下一期我们就来看看如何自动判断是否是撤回的消息,并自动将撤回的消息发送给“文件传输助手”。后记不管写什么,都希望能和更多的人交流。如果您有任何问题或需求,欢迎随时交流。我所有的项目源码都会放在下面的github仓库,有需要的可以参考,有问题请指正,谢谢!https://github.com/TitusWongCN/【Python写微信防退脚本】往期推荐:第一期:【Python写微信防退脚本】01熟悉ItChat库下面是我的公众号,如果你有兴趣可以扫一扫:
