注意: 这只是个组装中的机器人,作者还在探索。详细协议分析见web 微信与基于node的微信机器人实现。
``我认为,保持计算机科学的趣味举足轻重。这一学科在起步时让人乐不可支。当然,那些付钱的客户们时常会觉得被我们敷衍了。之后,我们开始信以为真。我们开始觉得,自己真的像是对成功地、无差错地、完美地使用这些机器义不容辞。我不以为然。我认为我们的责任是去拓展这一领域,将其发展到新的方向,并在私底下保持趣味。我希望计算机科学领域绝不要丧失其趣味意识。最重要的是,我希望我们不要变成传道士,不要认为你是兜售圣经的人,世界上这种人已经太多了。你所知道的有关计算的东西,其他人也都能学到。绝不要认为成功计算的钥匙只掌握在你的手里。我认为并希望,你所掌握的是智慧:那种当你第一次站在这一机器面前时就能看到它的本质的能力,这样你才能将它推向前进。''
Alan J. Perlis (生于1922年4月1日,卒于1990年2月7日) 从SICP摘抄
作者仅仅为了:
- 自己想要一个能进行信息收发的某国内顶级IM机器人。
- 熟悉Node的http/https request 等模块,学习HTTP基本知识。
- 学着Promise怎么使用,如果可以Stream如何玩,这么比较好的抽象整个流程
- 学习使用浏览器调试工具,https代理等等。甚至透明代理,iptable这种东西。。
- 抽象
最重要的是:
- 好奇
- 聊以自娱
所以,这是一堆混乱不堪的东西,希望各位老师教我做人。
基本上是这样,长连接一旦断开(服务器返回(服务器会在超时前返回)或者网络问题),继续长连接:
登录->长连接->长连接...(无尽的长连接来保持服务器能及时推送新信息)
根据长连接返回信息,如果出现服务器如果需要更新
webwxsync->filter->transducer
像js这种异步程序,当你长连接保持时并不会阻塞其他操作的执行。异步大法好!
如果不使用linux分支,需要imagemagick:
sudo apt-get install imagemagick
终端支持unicode字体:
sudo apt-get install ttf-ancient-fonts
不好意思,Mac下需要你自己折腾让imagemagick能支持管道流数据。 据我所知,brew 默认安装的imagemagick并不行
请为了学习和娱乐适量使用,因此造成的任何损失、影响,都由使用者自行承担,与作者无关。源代码遵循GPL v2。
使用方式
git clone https://github.com/HalfdogStudio/wechat-user-bot.git wechat-user-bot && cd wechat-user-bot
npm install
CURRENT_CASH=1314 node index.js
调试请求:
CURRENT_CASH=1314 DEBUG=info node index.js
扫描二维码确认登录。
目前是个聊天和记录机器人,对话引擎默认为重复(echo),可指定其它引擎。
登录
运行
- 实验性的多媒体文件上传接口实现
- 默认记账机器人
- 表情信息记录
- 重写media api
- 重构、清理和日志
- 重新组织代码
- 分离请求和逻辑处理
- 图像信息记录
- 更新web示例
- 分离display
- 将消息过滤和处理分离到入口程序中
- 滥用高阶函数特性
- 分离逻辑与重构
- 更加健壮的对话引擎
- 非好友用户名解析与缓存
- 群成员信息缓存
- 消息过滤机制
- 过滤特殊用户
- 重构消息处理逻辑
- 群组发信人用户名解析
- 智能关闭二维码图像窗口
- 清理协议相关程序
- 实现登录长连接 #8
- 分离替换api
- 重新实现长连接,修复多条消息会重新出现的问题 #5
- 分离回复逻辑 #2
- 捕获服务器断开消息自动退出 #1
- 修复遗漏消息的问题
- 接入图灵机器人实现聊天机器人
- 清理代码
- 完成用request替换所有原生模块
- 完成基本的回复机器人功能。