微信公众平台 Python 开发包(wechat-python-sdk) 更新至 v0.5.0,支持模拟登陆,上下文对话,验证码,欢迎拍砖 >_<

2014-12-09 14:35:09 +08:00
 doraemonext

发现原来那篇主题( http://v2ex.com/t/129474 )发布时间太久远了……提不上来了……重开一贴……

项目地址: https://github.com/doraemonext/wechat-python-sdk

文档地址: http://wechat-python-sdk.readthedocs.org/

做了一次比较大的更新,与上个版本比较:

这次更新兼容历史版本,可以无缝升级。

======== 我是分割线,下面是一点乱七八糟的东西 ========

然后做个预告,正在写另外一个微信公众号的开源平台( https://github.com/doraemonext/wechat-platform ),BSD许可证,主要面向群体是订阅号的运营者,支持多公众号。
对订阅号而言,深度集成各种模拟登陆功能,支持全部/随机/顺序/逆序回复规则里面的内容,支持混合回复语音/图片/文字/图文/音乐,支持插件扩展,自带人工识别腾讯验证码等等。目前后台基本完成,正在疯狂写管理后台的前端,发两张图 =.=

http://ww1.sinaimg.cn/large/c6b77a54gw1en3esah81ej21110q944d.jpg
http://ww4.sinaimg.cn/large/c6b77a54gw1en3esbfs6yj21110q9ae8.jpg

希望寒假之前能够搞定并发布第一个版本 >_<

======== 乱七八糟的东西结束,下面直接贴 wechat-python-sdk 的 README ========

非官方微信公众平台 Python 开发包,包括官方接口和非官方接口。

目前提供的非官方接口功能有:

请注意:本开发包并不打算提供一个独立的完整微信解决方案,我们更希望这个开发包可以非常融洽的在各个框架中进行集成并使用,对于HTTP请求及响应方面并不涉及,该开发包仅仅接受必要参数,提供各种微信操作的方法,并返回相应的可以响应微信服务器的数据(Response)或操作执行结果。

8394 次点击
所在节点    分享创造
25 条回复
abelyao
2014-12-09 15:23:58 +08:00
“主动对指定用户发送消息” 是不是需要48小时内用户有发东西给本号?或者是利用每月发送限制的次数发的?
doraemonext
2014-12-09 15:28:26 +08:00
@abelyao 需要48小时内用户有发东西给本号,不是利用每月发送限制的次数发的。

这个功能的目的主要是为了当用户发送请求后,可以不用管微信的限制,直接通过这些方法主动发送任意多的文字、图片、语音、图文等给用户。
abelyao
2014-12-09 15:34:17 +08:00
恕我直言,总觉得以模拟登陆去实现的功能,很坑,如果哪天官网改变了,就会影响到嵌入这个 SDK 的业务,而除非 SDK 有时时进行更新,不然就又是一个坑。之前我们也利用模拟登录做了有几个小功能,后来觉得不妥,改变业务的方向,使用官方 API 进行操作了。

不过还是支持楼主,无论是坚持写一个 SDK 持续力,还是把 SDK 公开出来给别人参考学习使用,都得要你点个赞。
doraemonext
2014-12-09 15:38:51 +08:00
@abelyao 谢谢 :-)
shuax
2014-12-09 21:09:24 +08:00
不知道用户分享公众号的时候有没有什么消息可以获取到这个事件。
doraemonext
2014-12-09 21:18:34 +08:00
@shuax 不清楚诶 =.=
virusdefender
2014-12-09 21:49:51 +08:00
看了看很棒~~过段时间有空看看能不能帮忙~
doraemonext
2014-12-09 22:43:25 +08:00
@virusdefender 谢谢啦~
14
2014-12-09 22:58:35 +08:00
谢谢楼主,上次用你的SDK重构了微信平台,微信的API文档没有楼主文档那么详细的权限说明,因为是个通用平台,但是我无法根据用户填的设置判断他是未认证还是已认证是订阅号还是服务号,我只能根据报错判断,不知道有没有什么好的实践= =
kxxoling
2014-12-09 23:11:27 +08:00
赞!已 star。
doraemonext
2014-12-09 23:11:52 +08:00
@14 可以把选择权交给用户 =.=

如果必须是自动判定的话,那只能调用一些无关痛痒的接口然后看看是否出错了……
doraemonext
2014-12-09 23:13:27 +08:00
@kxxoling 谢谢 :-)
14
2014-12-09 23:16:02 +08:00
@doraemonext 用户最不靠谱了。。。
14
2014-12-09 23:20:03 +08:00
@doraemonext 对,可是对于未认证的订阅号,似乎没有任何自动化的方法,它能够调用的只有被动发消息接口。。。
doraemonext
2014-12-09 23:29:35 +08:00
@14 可能也会有用户想把认证服务号当普通订阅号来用的吧(逃

未认证订阅号在调用WechatBasic的get_menu()获取自定义菜单时会抛出OfficialAPIError
认证订阅号或未认证服务号在调用WechatBasic的get_groups()获取用户分组时会抛出OfficialAPIError

先试get_groups(),如果成功就是认证服务号,如果抛出异常,再试get_menu(),如果成功就是认证订阅号或未认证服务号,否则就是未认证订阅号。

上面这两个方法都是只读的,属于无关痛痒的调用 =。=
doraemonext
2014-12-09 23:31:17 +08:00
@14 对于没有权限的调用,wechat-python-sdk会直接抛出对应异常,直接捕获就可以了,具体异常信息参考: http://wechat-python-sdk.readthedocs.org/zh_CN/master/exceptions.html
14
2014-12-09 23:47:00 +08:00
@doraemonext 谢,这样对于未认证的订阅号,还是无法区分有没有填错。然后发现去验证没有太大意义,万一中途用户又去认证了,还是按照正常逻辑捕获异常吧。说起异常,刚开始眼花没分清NeedParamError和NeedParseError导致误入歧途= =
doraemonext
2014-12-10 00:23:05 +08:00
@14 其实可以根据异常的信息来区分的,刚才做了一下实验,下面是实验结果:

无论公众号是什么类型,如果appid或appsecret输入错误,抛出的OfficialAccount异常内容为字符串"40001: invalid credential"

对于未认证订阅号,不管是调用get_menu()还是get_groups()都会抛出OfficialAccount异常,异常内容为字符串"50001: user unauthorized"

对于已认证订阅号或未认证服务号,调用get_groups()会抛出OfficialAccount异常,异常内容为字符串"48001: api unauthorized"

对于认证服务号,什么异常都不会抛出
doraemonext
2014-12-10 00:32:32 +08:00
@14 上面的异常名字全都写错了。。还改不了。。。全都是OfficialAPIError。。。
blue7wings
2014-12-10 09:27:20 +08:00
支持,支持。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/152606

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX