python发送钉钉提醒打卡

python发送钉钉提醒打卡,第1张

python发送钉钉提醒打卡
#!/usr/bin/env python  
# -*- coding:utf-8 _*-  
""" 
@author:壹拾壹
@Time: 2021/11/12 11:20
"""
import time
import hmac
import hashlib
import base64
import json
import urllib.parse
import urllib.request
import os
import random


class DingDingWebHook(object):
    def __init__(self, secret=None, url=None):
        """
        :param secret: 安全设置的加签秘钥
        :param url: 机器人没有加签的WebHook_url
        """
        if secret is not None:
            secret = secret
        else:
            secret = ''  # 加签秘钥
        if url is not None:
            url = url
        else:
            url = ""  # 无加密的url

        timestamp = round(time.time() * 1000)  # 时间戳
        secret_enc = secret.encode('utf-8')
        string_to_sign = '{}n{}'.format(timestamp, secret)
        string_to_sign_enc = string_to_sign.encode('utf-8')
        hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
        sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))  # 最终签名

        self.webhook_url = url + '×tamp={}&sign={}'.format(timestamp, sign)  # 最终url,url+时间戳+签名

    def send_meassage(self, data):
        """
        发送消息至机器人对应的群
        :param data: 发送的内容
        :return:
        """
        header = {
            "Content-Type": "application/json",
            "Charset": "UTF-8"
        }
        send_data = json.dumps(data)  # 将字典类型数据转化为json格式
        send_data = send_data.encode("utf-8")  # 编码为UTF-8格式
        request = urllib.request.Request(url=self.webhook_url, data=send_data, headers=header)  # 发送请求

        opener = urllib.request.urlopen(request)  # 将请求发回的数据构建成为文件格式
        print(opener.read())  # 打印返回的结果


if __name__ == '__main__':
    my_secret = ''
    my_url = ''
    my_data = {
        "msgtype": "markdown",
        "markdown": {"title": "测试markdown样式",
                     "text": "各位亲爱的兄弟姐妹们,现在是9:15分,早上记得打卡哦!"},
        "at": {
            "atMobiles": [],
            "isAtAll": True}  # 是否@所有人
    }

    dingding = DingDingWebHook(secret=my_secret, url=my_url)
    dingding.send_meassage(my_data)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5480000.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存