python向企业微信推送消息


需求

程序中的某些消息推送到企业微信中,通过微信进行接收。

代码

import requests
import json
import yaml



class Wechatpush:
    def __init__(self, corpid, corpsecret, agentid=None) -> None:
        self.corpid = corpid
        self.corpsecret = corpsecret
        self.agentid = agentid
        self.token = None

    def get_token(self):
        params = {
            'corpid': self.corpid,
            'corpsecret': self.corpsecret
        }
        r = requests.get(
            'https://qyapi.weixin.qq.com/cgi-bin/gettoken', params=params).content
        r = json.loads(r)
        if r['errcode'] == 0:
            self.token = r['access_token']
            return r['access_token']
        else:
            print("error:{}".format(r['errmsg']))
            return None

    def send_content(self, data):
        url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={}".format(
            self.token)
        res = requests.post(url, data=json.dumps(data)).json()
        if res.get("errcode") == 40014:
            self.get_token()
            return self.send_content(data)
        return res

    def sendtext(self, users, content, agentid=None):
        if agentid is None:
            agentid = self.agentid
        data = {
            "touser": users,
            "msgtype": "text",
            "agentid": agentid,
            "text": {
                "content": content,
            },
            "safe": 0,
            "enable_id_trans": 0,
            "enable_duplicate_check": 0,
            "duplicate_check_interval": 1800
        }
        return self.send_content(data)

    def send_card(self, users, title, desp, content, agentid=None):

        if agentid is None:
            agentid = self.agentid


        data = {
            "touser": users,
            "msgtype": "textcard",
            "agentid": agentid,
            "textcard": {
                "title": title,
                "description": desp,
                "url": "https//www.baidu.com",
                "btntxt": "更多"
            },
            "enable_id_trans": 0,
            "enable_duplicate_check": 0,
            "duplicate_check_interval": 1800
        }
        return self.send_content(data)


def main():
    corid="XXX"
    corpsecret="XXX"
    agentid="XXX"
    mypush = Wechatpush(corid, corpsecret, agentid)
    # mypush.sendtext(agentid, "@all", "测试消息")
    mypush.send_card("@all", "测试消息", "长的消息", "aaaaaaaaaaaaaaaaaa")


if __name__ == "__main__":
    main()

评论
评论
 上一篇
python应用打包成docker镜像 python应用打包成docker镜像
前言今天看到一个mjj分享的应用,用python实现的,并且提供了docker的部署。因此i记录一下将python写的服务端通过dockerfile的方式打包成镜像的方式。 方法项目的原地址是https://github.com/vasts
2022-12-10 Zhang Rui
下一篇 
ssh config即vscode remote ssh配置文件的常用模板 ssh config即vscode remote ssh配置文件的常用模板
连接配置最朴素的配置Host 206rui HostName rdma206.baidu.com User rui Host:为我们自定义的名字,这个名字是在remote ssh窗口中显示主机名称。之后也可以直接使用ssh 206r
2022-08-03 Zhang Rui
  目录