专栏首页人工智能微信机器人-Python学习日志(1)

微信机器人-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 条评论
登录 后参与评论

相关文章

  • 从码农到大牛,如何做到技术与心境的双重提升?

    “ 来自当当架构部的张亮老师,从技术和情怀的角度分享自己的成长轨迹,具备工匠精神的同时也要注重回报社会,做到技术与心境双重提升。 ? 业务功能关注点 ? 对于一...

    企鹅号小编
  • 程序员为什么加班太多?有可能是代码写得烂……

    程序员往往渴望加入的是一支“30%的时间在写代码,而70%的时间在喝着咖啡讨论着如何将产品做好”的团队。软件工作应该成为一项技术和艺术融合的高智力活动,而项目经...

    企鹅号小编
  • 程序员提高编程能力万无一失的办法

    那就是去读别人写的代码。读那些你常用的库、编程框架的源代码,读那些你景仰的大牛的源代码,读代码里的测试(测试本身就是一种有效的文档);读代码、改代码、运行代码。...

    企鹅号小编
  • CTFCrackTools在Windows下显示A Java Exception has occurred的解决方案

    打CTF做密码学的人一定少不了用这个工具,CTFCrackTools,这个几乎可以号称密码学的神器,但是呢,最近博主遇到了一些麻烦事,每次打开的时候都是显示A ...

    Angel_Kitty
  • Nginx-3.控制nginx

    master进程id在默认写入到/nginx/logs/nginx.pid文件中。文件也可以在nginx.conf文件中指定。master进程支持以下信号:

    _淡定_
  • 我珍藏的一些好的Python代码,技巧

    最近后台关注的粉丝越来越多,大部分其实还是偏入门和基础!很多小伙伴加了菜鸟学Python小助手的微信,有一些在问一些入门的问题,有一些在问如何学习Python.

    材ccc
  • python的一些细节(2)

    想想自己写了这么久的python,其实基础的东西还是不扎实,重新学习一下廖雪峰老师的教程,有很多之前未知或者有疑惑的东西得到了解答。

    钱塘小甲子
  • 【玩转Eclipse】——eclipse实现代码块折叠-类似于VS中的#region……#endregion

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

    DannyHoo
  • 双11:快递涨价趁火打劫,电商叫苦?

    双11大战来临,除了各大电商平台之间的明争暗斗,一个比较大的看点就是快递涨价。十一前夕就已经传闻各大快递公司今年双11期间要涨价,在各大电商平台备战双11之际,...

    刘旷
  • UNPv1第二十六章:数据链路访问

    目前大多数操作系统都为应用程序提供了访问数据链路层的手段,它使得应用程序拥有如下功能:

    提莫队长

扫码关注云+社区

领取腾讯云代金券