关于python版微信使用经验分享

本人最近在使用python版的微信做了一些模拟操作,使用的wxpy封装好的框架api,聊天机器人接入的是图灵,其他的暂时还没有功能的接入计划。

在实施的过程中遇到了很多问题,大部分是微信api过时导致了,因为本身调用的是web微信的api,我看到git上的项目已经最近的更新时间是2017年,中间很多次微信的api调整都没更新到,比如添加好友,比如被@检测等等。

今天分享一下自己的使用经验和一些自己的封装方法:

朋友列表和群列表,因为会自动同步最近活跃的群,所以如果新添加的群需要重新获取一下groups。api提供了一个search的搜索方法,使用起来稍微麻烦一些,我换了一种思路,直接下标获取好友和群。方法如下:

def fslist():
    fs= bot.friends()
    a = 0
    for i in fs:
        print a
        a +=1
        print i
def gslist():
    gs= bot.groups()
    a = 0
    for i in gs:
        print a
        a +=1
        print i

直接可以通过元素索引角标直接获取元素。

撤回消息。这个我只是对原来的recall()方法做了简单封装,这里也见识了python的简洁性。主要是在调试模式中使用。

def re(*msg):
    if not msg  == ():
        ms=bot.messages.search(msg)[-1]
        ms.recall()
    else:
        ms=bot.messages[-1]
        ms.recall()
    print ms

发送图片文件,主要也是在调试模式中使用

def sendpic(user,name):
    user.send_image('/Users/Vicky/Downloads/'+name)
    print user
    print "发送了图片"+name

聊天机器人对话,本人接的图灵的,接入方法请参照[python微信+requests+图灵机器人制作聊天机器人](/blog/article/利用python wxpy和requests写一个自动应答微信机器人实例.html),我这里只写一个封装过后的方法,方便调用。现在图灵已经砍掉了免费用户使用。

def getTulingReplay(msg,friend):
    userid = ""
    if friend in fs:
        userid = fs.index(friend)
    if friend in gs:
        userid = gs.index(friend)
    j = dict(
            reqType=0,
            perception=dict(
                inputText=dict(
                    text=msg
                    )
                ),
            userInfo=dict(
                apiKey="***",
                userId=userid
                )
            )
    r = requests.post("http://openapi.tuling123.com/openapi/api/v2",json=j)
    info = json.loads(r.text)["results"]
    c = info[0]["values"]
    d = c.keys()
    m = c[d[0]]
    print m
    friend.send(m)

保存聊天记录。这个原需求是想整理一下群聊天记录,还有那些撤回的,现在做分析用。只存本地,尚未清洗数据到数据库。只有文本信息。

由于某些web API已经不用了,所以在使用当中会遇到一些问题,可参考web端的网页功能。

点击阅读原文,有兴趣的童鞋可以一起交流,另外求粉求关注。

本文分享自微信公众号 - FunTester(NuclearTester)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Bingo的深度学习杂货店

Leetcode【781、869】

森林中的兔子。每个兔子都有颜色,其中一些兔子(可能全部)告诉你还有多少其他的兔子和自己有相同的颜色,将它们的回答放在 answers 数组里。返回森林中兔子的最...

7710
来自专栏完美Excel

Python学习笔记:简单的文件操作

在Python中,我们经常需要与文件交互,例如,找到文件的位置、读取文件中的内容、将数据保存在文件中,等等。而最基本的操作是要知道文件的位置,或者让程序知道要操...

9730
来自专栏测试游记

使用Gitlab进行代码管理(Merge requests)

可以访问Docker Hub或者直接使用docker search gitlab来进行搜索

74830
来自专栏我和PYTHON有个约会

大牧絮叨设计模式:单例模式

单例模式(Singleton)[GOF95]是一种对象的创建模式,确保系统中使用了单例模式的类型只会存在一个实例对象,通过该对象给系统提供一致性的解决方案。

10440
来自专栏完美Excel

Python学习笔记:输入与输出

可以将数据信息输入到Python中,也可以从Python中输出数据。通常,导入数据的方法取决于想要输入或输出的数据的格式。

12810
来自专栏北京宏哥

java接口自动化(一) - 接口自动化测试整体认知 - 开山篇(超详解)

  了解什么是接口和为什么要做接口测试。并且知道接口自动化测试应该学习哪些技术以及接口自动化测试的落地过程。其实这些基本上在python接口自动化的文章中已经详...

62050
来自专栏机器学习与python集中营

tqdm模块无法单行打印进度条

python的tqdm模块用于进度条打印等功能,在大部分IDE、大部分情况下是可以正常打印的,但当你手动停止了tqdm管理的代码块后,就会出现以下场景:

26550
来自专栏Rgc

python利用threading处理 list数据

需求:在从银行数据库中取出 几十万数据时,需要对 每行数据进行相关操作,通过pandas的dataframe发现数据处理过慢,于是 对数据进行 分段后 通过 线...

21220
来自专栏Jerry的SAP技术分享

why the SalesOrder header note is read only

版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)

7220
来自专栏歪脖贰点零

用Supervisor实现进程守护,在异常退出时自动重启

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。

16740

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励