Python如何创造推送企微机器人

import os
from requests import request 
import base64 #表示任意二进制数据的方法。它常常用于在处理文本数据时,将非文本数据(比如图片和音频)转化为可以处理的格式。
import hashlib
import re

class WechatBot:
    """
    企业微信机器人
    当前自定义机器人支持文本(text)、markdown(markdown)、图片(image)、图文(news), 文件(file)五种消息类型。
    机器人的text/markdown类型消息支持在content中使用<@userid>扩展语法来@群成员
    """
 
    def __init__(self, webhook_url):#创建对象,通过接口识别
        """
        :param webhook_url: 机器人的WebHook_url
        """
        self.webhook_url = webhook_url
        self.headers = {
            "Content-Type": "application/json",
            "Charset": "UTF-8"
        }
    def send_text(self, content, mentioned_list=[], mentioned_mobile_list=[]):#对象的方法,包含三个参数,列表类型
        """
        发送文本消息
        :param content: 文本内容,最长不超过2048个字节,必须是utf8编码
        :param mentioned_list: userid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人,如果开发者获取不到userid,可以使用mentioned_mobile_list
        :param mentioned_mobile_list: 手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人
        """
        payload = {#个字典类型的变量 payload,用于存储要发送的消息内容
            "msgtype": "text",
            "text": {
                "content": content,
                "mentioned_list": mentioned_list,
                "mentioned_mobile_list": mentioned_mobile_list
            }
        }
        response = request(url=self.webhook_url, method="POST", json=payload, headers=self.headers)
        if response.json().get("errcode") == 0:
            print(f"通过企业微信发送文本消息成功:{response.json()}")
            return True
        else:
            print(f"通过企业微信发送文本消息失败:{response.text}")
            return False
        

    def send_markdown(self, content):
        print("hello")
        """
        发送markdown消息
        目前支持的markdown语法是如下的子集:
            1. 标题 (支持1至6级标题,注意#与文字中间要有空格)
            2. 加粗
            3. 链接
            4. 行内代码段(暂不支持跨行)
            5. 引用
            6. 字体颜色(只支持3种内置颜色), 绿色(color="info"),灰色(color="comment"),橙红色(color="warning")
        :param content: markdown内容,最长不超过4096个字节,必须是utf8编码
        """
        payload = {
            "msgtype": "markdown",
            "markdown": {
                "content": content
            }
        }
        response = request(url=self.webhook_url, method="POST", json=payload, headers=self.headers)
        if response.json().get("errcode") == 0:
            print(f"通过企业微信发送md消息成功:{response.json()}")
            return True
        else:
            print(f"通过企业微信发送md消息失败:{response.text}")
            return False
        
    def send_picture(self, image_path):
        """
        发送图片消息
        :param image_path: 图片的绝对路径
        """
        with open(image_path, "rb") as f:
            image_data = f.read()
        payload = {
            "msgtype": "image",
            "image": {
                "base64": base64.b64encode(image_data).decode("utf-8"),  # # 将图片数据转换成Base64编码格式
                "md5": hashlib.md5(image_data).hexdigest()  # # 计算图片的MD5值
            }
        }
        response = request(url=self.webhook_url, method="POST", json=payload, headers=self.headers)
        if response.json().get("errcode") == 0:
            print(f"通过企业微信发送图片消息成功:{response.json()}")
            return True
        else:
            print(f"通过企业微信发送图片失败:{response.text}")
            return False
 
        
        

# 注意webhook_url这里替换为自己申请的机器人webhook
webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" #注意换成自己的机器人hook地址
bot = WechatBot(webhook_url)

 
 
# 发送文本,并@all
bot.send_markdown(content="hello, <font color='warning'>this is test</font>")  

关注公众号「水沐教育科技」,在手机上阅读所有教程,随时随地都能学习。内含一款搜索神器,免费下载全网书籍和视频。

公众号二维码
微信扫码关注公众号

微信交流群 关注微信公众号,加入官方交流群。内含一款搜索神器,免费下载全网书籍和视频。