利用Python制作微信机器人(一)

利用Python制作微信机器人(一)双十一时候,阿里云服务器打折。于是直接买了三年的阿里云服务器。自己也明白有一个云服务器说白了就是有一个公网IP+7*24h不关机的电脑。但买完服务器后,就不知道用这服务器来做点什么炫酷的事情了。这两天看到有某位海王做了个自动回复消息的机器人来给女朋友们回消息,是否可以用这个服务器来做一个自动回复消息的机器人。…

大家好,又见面了,我是你们的朋友全栈君。

双十一时候,阿里云服务器打折。于是直接买了三年的阿里云服务器。自己也明白有一个云服务器说白了就是有一个公网IP+7*24h不关机的电脑。但买完服务器后,就不知道用这服务器来做点什么炫酷的事情了。突然想到,最近一直在学python,我可以用python做一些自动化的事情。后来在网上看有人用python做了个微信自动化聊天的工具。但是这个工具是通过调用网页版微信api来进行通信的,而现在微信网页版已经不能使用了,所以这些api也就失效了。后来发现企业版微信是个神器,可以用企业微信来做一个自动回复的机器人。经过两天时间的摸索,终于做出了雏形。话不多说,先放成果。
在这里插入图片描述

1.简述

这个自动回复机器人,主要是用python的flask框架写了个微服务。给企业微信自定义应用发消息,会自动将消息转发到自己配置的后端,根据企业微信提供的解码算法,可以拿到所发的消息,再根据所发的消息进行相关回复,并将回复进行加密返回。

2.申请企业微信

https://work.weixin.qq.com/

在这里插入图片描述

3.创建应用

然后 应用管理 – 应用 – 自建
在这里插入图片描述
比如新建了个应用
在这里插入图片描述

4.编写脚本

记住自己的AgentId 和Secret ,在上方我的企业栏里
在这里插入图片描述
下面有个企业id
在这里插入图片描述
也记住这个id,然后按照下方的代码填入相应的id即可

def send2wechat(message):
    AgentId = 'xxxxx'
    Secret = 'xxxxx'
    CompanyId = 'xxxxx'
    # 通行密钥
    ACCESS_TOKEN = None
    # 如果本地保存的有通行密钥且时间不超过两小时,就用本地的通行密钥
    if os.path.exists('ACCESS_TOKEN.txt'):
        txt_last_edit_time = os.stat('ACCESS_TOKEN.txt').st_mtime
        now_time = time.time()
        if now_time - txt_last_edit_time < 7200:  # 官方说通行密钥2小时刷新
            with open('ACCESS_TOKEN.txt', 'r') as f:
                ACCESS_TOKEN = f.read()
                # print(ACCESS_TOKEN)
    # 如果不存在本地通行密钥,通过企业ID和应用Secret获取
    if not ACCESS_TOKEN:
        r = requests.post(
            f'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={CompanyId}&corpsecret={Secret}').json()
        ACCESS_TOKEN = r["access_token"]
        # print(ACCESS_TOKEN)
        # 保存通行密钥到本地ACCESS_TOKEN.txt
        with open('ACCESS_TOKEN.txt', 'w', encoding='utf-8') as f:
            f.write(ACCESS_TOKEN)
    # 要发送的信息格式
    data = { 
   
        "touser": "@all",
        "msgtype": "text",
        "agentid": f"{AgentId}",
        "text": { 
   "content": f"{message}"}
    }
    # 字典转成json,不然会报错
    data = json.dumps(data)
    # 发送消息
    r = requests.post(
        f'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={ACCESS_TOKEN}', data=data)
    # print(r.json())

此段代码参考: https://www.jianshu.com/p/99f706f1e943

这样运行这个脚本就可以给我们自己的微信发消息了
在这里插入图片描述
下一节来教学如何给这个应用发消息,并且后端可以接收到消息。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149777.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深入浅出MFC-读书笔记

    深入浅出MFC-读书笔记不想去成为一个伟大的程序员,只想成为一个具有良好习惯的优秀程序员。第一章:Win32基本程序观念我也赞同书中所讲,应用MFC框架开发Windows程序需要深入到底层,如果只停留在表面应用知其然而不知其所以然,这样会限制你更好的应用MFC框架。Win32程序开发流程下图说明一个32位WindowsSDK程序的开发流程:Windows程序分为…

    2022年6月16日
    33
  • DDL和DML的区别

    DML(DataManipulationLanguage)数据操纵语言:适用范围:对数据库中的数据进行一些简单操作,如insert,delete,update,select等. DDL(DataDefinitionLanguage)数据定义语言:适用范围:对数据库中的某些对象(例如,database,table)进行管理,如create、alter、drop、TRUNCATE、show等 …

    2022年4月6日
    77
  • Pytest(5)美化插件进度条pytest-sugar

    Pytest(5)美化插件进度条pytest-sugar前言在我们进行自动化测试的时候,用例往往是成百上千,执行的时间是几十分钟或者是小时级别。有时,我们在调试那么多用例的时候,不知道执行到什么程度了,而pytest-sugar插件能很好解决我们的痛点。

    2022年7月31日
    8
  • JAVAWEB酒店管理系统[通俗易懂]

    JAVAWEB酒店管理系统[通俗易懂]酒店管理系统分为前台和后台两个部分,其中后台供管理员管理系统之用,包括客房类型设置模块、客房设置模块以及操作员设置三个子模块,具体的功能模块如下。客房类型设置模块:该模块用来管理酒店的所有客房类型,包括新增客房类型、编辑已有客房类型、删除客房类型等功能。客房设置模块:该模块用来管理酒店的所有客房信息,包括新增客房、编辑已有客房、删除客房等功能。操作员设置模块:该模块用来管理酒店的操作员信息,包括新增操作员、编辑已有操作员信息、删除操作信息等功能。系统前台供酒店所有工作人员使用,包括入住登记模块、结账

    2022年9月23日
    2
  • stm32 SWD调试接口的使用

    stm32 SWD调试接口的使用SWD和传统的调试方式区别   1.SWD模式比JTAG在高速模式下面更加可靠。在大数据量的情况下面JTAG下载程序会失败,但是SWD发生的几率会小很多。基本使用JTAG仿真模式的情况下是可以直接使用SWD模式的,只要你的仿真器支持。所以推荐大家使用这个模式。   2.在大家GPIO刚好缺一个的时候,可以使用SWD仿真,这种模式支持更少的…

    2022年5月8日
    157
  • thetrialthatrockedtheworld总结_the average hourly wage

    thetrialthatrockedtheworld总结_the average hourly wage聊聊storm WindowTridentProcessor的FreshCollector

    2022年4月20日
    84

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号