前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信机器人-Python学习日志(1)

微信机器人-Python学习日志(1)

作者头像
企鹅号小编
发布2018-01-30 11:02:46
2K0
发布2018-01-30 11:02:46
举报
文章被收录于专栏:人工智能人工智能

一直以来,这个号发的都是《狼人杀小程序的开发日志》,体现产品的思路比较多,从纯技术的角度看其实并没有很精彩。这次,来讲讲我在其他方面的探索吧。

众所周知,微信公众号很早就实现了根据关键字自动回复的功能,后台可以根据用户发送的消息设置自动回复,甚至自动和用户聊得有来有去。但是我们自己用的微信号却没有这个功能。

这次我开发的是一个微信机器人程序,可以管理你的个人微信号,进行收发消息、增删好友、文件传输和群管理等功能。配合图灵机器人,还可以让你的微信变成一个自动陪聊的微信机器人,是个很有趣的小工具。

这个工具并非我独立开发,而是fork了Github上的一个项目。原项目的地址是https://github.com/liuwons/wxBot ,我在原作者的基础上进行改进,改善了兼容性,修正了一些错误,并且添加了图形界面。今后应该还会有更多后续开发,且待我慢慢道来。

开始之前,说一点题外话吧。最近公司面临改组,很多人的职位面临变动,惶惶不可终日。这倒也不是不能理解,只是可叹时代日新月异,却还有人梦想着有什么职位可以躺着干一辈子。如果沉迷于自我满足,那么在变化来临的时候就会陷入迷惘。不管怎么说,求人不如求自己。与其满地打滚撒泼要福利,不如让自己强大起来。

因为面临可能的职务变动,所以最近整理了一下自己的简历。在盘点自己的知识结构时发现,其实一直以来我用的语言都很杂,基本是什么合用就用什么。前端和微信小程序只支持JS,那么就用JS。后端服务器只支持PHP,那么就用PHP。GPU计算需要OpenCL和Cuda,那么就OpenCL和Cuda。Unity需要C#,那么就C#。至于平时工作中为了访问数据库和画界面方便,还用过Delphi和PowerBuilder(一个可能没什么人知道的年代久远的语言)。为了解决历史遗留问题,甚至连VB都用过,毕竟我在高中之前最熟悉的语言就是VB。

全栈工程师当久了,能力平均而优势不够明显,这样的人小公司喜欢,但大公司就不太喜欢了。所以我打算把Python捡起来学习一下,毕竟:

在学校做项目的时候,用过Django,访问起MongoDB是很方便。但是大概因为那时候PHP用得比较顺手,所以一直心有抵触。特别是后来发现,PHP访问MongoDB也有库。但是即便如此,Python的优美还是让人印象深刻。随着人工智能概念的火热,Python突然又火起来了。这次我打算不管Django,换一个角度切入。

项目的文件并不多,最重要的就是wxbot.py文件。fork下来后,第一步当然是阅读代码。项目的规模不大,大概就一两千行代码的样子。原作者的代码逻辑也很清晰,所以不难理解。作者的主要思路是利用Web微信的接口,进行相关的开发。这样用户就可以在扫码登录后,把微信托管在计算机上。这和我最初的猜想相差不远。

基本读懂代码的逻辑后,就开始思考改进的方向了。语法方面的特点属于非常基础的东西,直接略过了。我遇到的第一个坑,就是Python的版本问题。准确地说,就是Python2.7和Python3的冲突问题。这两个版本的冲突令我比较意外,因为在我的世界观里,通常后一个版本应该能在很短的时间内碾压之前的版本,完成替代,然而实际上却并非如此。

Python2.7和Python3的区别不小,使得他们的代码无法互相兼容。不仅如此,他们的库也不能完全兼容:某些库只能运行于Python2.7,这使得一些使用了2.7版本的库的项目根本就没法升级到3。例如Ubuntu系统自带的Python就是2.7版本的,并且无法删除或者升级。为了能在系统上跑Python3,需要在系统中装多个Python,并且解决一些对新手来说非常蛋疼的路径问题。

因此,我做的第一个改进,是把它移植到Python3上。(代码本身是2.7的)当然,后来我还做了其他的尝试,让一份代码可以兼容不同的Python版本,这是后话。顺带一提,Python3有自带2to3的工具,但是据说并不完美。作为初学者,为了能更深入理解它们的区别,我没用这个工具。

项目本身规模不大,大概就一两千行代码的样子,所以我就硬改了。大概总结出来的区别如下:

最明显的,就是print语句。旧版的语句中print是关键字,格式形如print str ,新版的语句中格式形如print(str)。

新版中字符串不再需要进行一些不必要的编码转换。

某些库的名字或是库中函数的用法有所变化。

其他暂未发现的坑。

项目相关的全套代码都更新在Github上,开源的,欢迎fork拍砖。地址:https://github.com/xdx3000/wxBot

本篇文章对应分支:62ccf81

本文来自企鹅号 - 一个程序猿的日记媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 一个程序猿的日记媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档