企业微信机器人发送文本、图片、文件、markdown、图文信息

2023-12-17 04:55:51
import requests
import base64
import hashlib
import json
# 机器人地址的key值
key="811a1652-60e8-4f51-a1d9-231783399ad2"
def path2base64(path):
    """
    文件转换为base64
    :param path: 文件路径
    :return:
    """
    with open(path, "rb") as f:
        byte_data = f.read()
    base64_str = base64.b64encode(byte_data).decode("ascii")    # 二进制转base64
    return base64_str
def path2md5(path):
    """
    文件转换为md5
    :param path: 文件路径
    :return:
    """
    with open(path, "rb") as f:
        byte_data = f.read()
    md5_str = md5(byte_data)
    return md5_str


def md5(text):
    """
    md5加密
    :param text:
    :return:
    """
    m = hashlib.md5()
    m.update(text)
    return m.hexdigest()

# 上传文件
def upload_file(file_path):
    """
    企业微信机器人上传文件,发送文件前需要现上传
    :param file_path: 文件路径
    :return:
    """

    data = {'file': open(file_path, 'rb')}
    resp = requests.post(f"https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key={key}&type=file", files=data)
    json_res = resp.json()
    print(json_res)
    if json_res.get('errcode') == 0:
        print(f"企业微信机器人上传文件成功,file:{file_path}")
        return json_res.get('media_id')
    else:
        print(f"企业微信机器人上传文件失败,file:{file_path}")
        return json.loads(resp.text)


class QY:
    def __init__(self):
        self.url = f"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={key}"
    # 发送图片
    def image(self,image):
        data={
            "msgtype": "image",
            "image": {
                "base64":path2base64(image),
                "md5":path2md5(image)
        }}

        resp=requests.post(url=self.url,json=data)
        print(resp.text)
        return json.loads(resp.text)
    # 发送文件
    def send_file(self,file):
        media_id=upload_file(file)
        data={
            "msgtype": "file",
            "file":{
                "media_id":media_id
            }
        }
        resp=requests.post(url=self.url,json=data)
        print(resp.text)
        return json.loads(resp.text)
    # 发送文本
    def send_text(self,text):
        data={
            "msgtype": "text",
            "text":{
                "content":text
            }
        }
        resp=requests.post(url=self.url,json=data)
        print(resp.text)
        return json.loads(resp.text)
    # 发送markdown文本
    def markdown(self,markdown):
        data={
            "msgtype": "markdown",
            "markdown": {
                "content": '''实时新增用户反馈<font color=\"warning\">132例</font>,请相关同事注意。\n
                 >类型:<font color=\"comment\">用户反馈</font>
                 >普通用户反馈:<font color=\"comment\">117例</font>
                 >VIP用户反馈:<font color=\"comment\">15例</font>'''
            }
        }
        resp=requests.post(url=self.url,json=data)
        print(resp.text)
        return json.loads(resp.text)
    # 发送图文类型
    def news(self,news):
        data={
                "msgtype": "news",
                "news": {
                   "articles" : [
                       {
                           "title" : "中秋节礼品领取",
                           "description" : "今年中秋节公司有豪礼相送",
                           "url" : "www.qq.com",
                           "picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"
                       }
                    ]
                }
            }
        resp=requests.post(url=self.url,json=data)
        print(resp.text)
        return json.loads(resp.text)



if __name__ == '__main__':
    qy = QY()
    # qy.image("C:/Users/Administrator/Pictures/Saved Pictures/1.jpg")
    # 发送文件
    # qy.send_file("main.py")
    # 发送文本
    # qy.send_text("hello world")
    # 发送markown文本
    # qy.markdown("")
    #发送图文信息
    # qy.news('') 作者:浅若红尘 https://www.bilibili.com/read/cv28561312/?spm_id_from=333.999.0.0 出处:bilibili

有事情,请到哔哩哔哩

文章来源:https://blog.csdn.net/m0_62247560/article/details/135040787
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。