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

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

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

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

这个工具并非我独立开发,而是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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏后端技术探索

性能优化模式(纯干货!!)

性能优化涉及面很广。一般而言,性能优化指降低响应时间和提高系统吞吐量两个方面,但在流量高峰时候,性能问题往往会表现为服务可用性下降,所以性能优化也可以包括提高服...

1384
来自专栏Fundebug

写给前端工程师的10条实用原则

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。

1124
来自专栏企鹅号快讯

PHP 霸主地位被动摇,JIT 是穷途末路后的绝地反击?

关键时刻,第一时间送达! 摘要:PHP 是 Web 开发最常用的语言,自创建以来,PHP 语言经历了许多激烈的改进,其中性能是开发人员在评估新版本时考虑的主要标...

2597
来自专栏老九学堂

如何编写没有bug的代码?

我记不了很多东西。像标准库中的函数和方法、参数位置、软件包名称,样板代码等等,都在我脑容量之外。

721
来自专栏杨建荣的学习笔记

数据库和开发行业中的IDE工具

在我从事DBA工作的这些年,经常会有网友会问我,数据库有什么好的工具可以使用,让我给推荐几个,数据库的工具还少吗,Oracle阵营: Toad(付费),S...

4888
来自专栏ThoughtWorks

为什么优秀的程序员喜欢命令行?|洞见

优秀的程序员 要给“优秀的程序员”下一个明确的定义无疑是一件非常困难的事情。擅长抽象思维、动手能力强、追求效率、喜欢自动化、愿意持续学习、对代码质量有很高的追求...

3025
来自专栏云市场·精选汇

第一次做网站啥也不知道怎么办?新万建站防坑小妙招

很多朋友都没有接触过做网站,当需要做个网站的时候,往往一脸懵!!网站?需要什么东西啊,一个完整上线可以访问的网站由哪几部分组成呢?一个成熟的可以访问的网站,一般...

2125
来自专栏小文博客

Vultr推出新套餐——3.5$/月,有IPV4地址

今天突然发现vultr多了一个3.5$的套餐,仔细看了下,配置和2.5$的一样,唯一区别就是有IPV4地址,可以说对于那些科学上网的朋友是个天大的好消息!

4092
来自专栏企鹅号快讯

C语言真的太强大了,C几乎无处不在!

今天存在的许多C项目都是在几十年前开始的。 UNIX操作系统的开发始于1969年,其代码在1972年被重写为C语言。C语言实际上是为了将UNIX内核代码从汇编语...

5157
来自专栏更流畅、简洁的软件开发方式

根据实例说数据库设计(一)—— 人员管理

     说在前面      可能您会问,树的系列还差第三篇没有写呢,怎么就又说数据库设计了?因为如果写第三篇的话,那么就涉及到了权限,而权限里面又涉及到了人员...

5227

扫码关注云+社区

领取腾讯云代金券