钉钉群机器人设置——python版本

钉钉群机器人设置------python版本

应用场景

由于工作需要,很多项目执行程序后出现报错信息无法第一时间收到,因此实时预警对于监控程序还是有必要。(仅个人观点
参考文档及博客
钉钉官方文档
个人博客

钉钉界面操作

1.钉钉群------群设置------机器人

  1. 添加机器人------自定义 类型------添加
  1. 定义机器人名称------勾选加签 ------完成

4.webhook是自动生成的,access_token是代码中access_token,也是自动生成

5.添加机器人成功

程序开发

程序中主要展示需要 @指定人推送内容
@指定人 : 官方文档给出两种方式,可能我操作不对,只能实现使用手机实现@指定人的。有机智的小伙伴可以尝试一下官方文档上的另一种方式
推送内容:推送的内容格式官方给出了几种,我只尝试使用文本和markdown。有机智的小伙伴可以尝试一下官方文档上的另外几种方式

python 复制代码
# -*- coding:utf-8 -*-
# @Time : 2025/1/21 11:51
# @Author: 水兵没月
# @File : Dingding_jqr.py
# @Software: PyCharm
import sys
import traceback
from urllib import parse

import requests
import time
import hashlib
import base64
import hmac
import json
from fake_useragent import UserAgent
# 钉钉Webhook地址
webhook = "https://oapi.dingtalk.com/robot/send"
access_token = "01010f5983cdc79d006eda01b4e**************379cd8ba0e42693"   # webhook 自动生成
secret = "SEC098e6793d38e0154a1f81a********************ebf02ae2ff74ca"  # 钉钉上可以生成
mobile_list = ["137*******"]   # @指定人的列表

# 加签函数
def get_sign(secret):
    timestamp = str(int(time.time() * 1000))  # 当前时间戳(毫秒)
    secret_byte = bytes(timestamp +'\n'+secret, encoding='utf-8')  # 创建签名数据
    hmac_key = bytes(secret, encoding='utf-8')  # 使用secret创建HMAC密钥
    sign = hmac.new(hmac_key, secret_byte, digestmod=hashlib.sha256).digest()  # 生成签名
    sign_base64 = parse.quote_plus(base64.b64encode(sign))
    return sign_base64, timestamp  # 返回签名和时间戳

# 发送消息函数
def send_message(content):
    sign, timestamp = get_sign(secret)  # 获取签名和时间戳
    url = f"{webhook}?access_token={access_token}&timestamp={timestamp}&sign={sign}"  # 拼接成最终请求地址
    stauts = content["stauts"]
    stauts = "成功" if stauts else "失败"
    msg_except = content["exception"]
    msg_time = str(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(time.time()))))
    # markdown 类型展示
    message = {
     "msgtype": "markdown",
     "markdown": {
         "title":"程序执行情况",
         "text": f"**执行情况: {stauts}**\n\n"
                 f"**服务器类型: {sys.platform}**\n\n"
                 f"**异常信息: {msg_except}**\n\n"
                 f"**时间: {msg_time}**\n\n @137*******"
     },
      "at": {
          "atMobiles": mobile_list,
          "isAtAll": False
      }
 }
 	# 文本类型展示
    # message = {
    #     "msgtype": "text",  # 消息类型
    #     "at": {
    #       "atMobiles": mobile_list,
    #       "atUserIds": [],
    #       "isAtAll": False
    #     },
    #     "text": {
    #     "content": f"{content}+"+"@137*******"
    #     },
    # }
    headers = {'Content-Type': 'application/json', "User-Agent":UserAgent().Chrome}  # 设置请求头
    response = requests.post(url, data=json.dumps(message), headers=headers)  # 发送请求

    # 打印响应结果
    if response.status_code == 200:
        return response.json()
    else:
        return response.text

效果展示

相关推荐
Fleshy数模3 分钟前
玩转 Python:多线程、装饰器、视觉检测与正则匹配实战
开发语言·python·视觉检测
Lucas_coding3 分钟前
【xiaozhi-esp32-server-服务端全模块启动】 xiaozhi-server 获取6位有效验证码
python
❆VE❆6 分钟前
python实战(一):对接AI大模型并应用
开发语言·人工智能·python·ai
qq_372906938 分钟前
CSS怎么在flex布局中实现项目均分间距_设置justify-content space-evenly
jvm·数据库·python
yangtuoni11 分钟前
vscode调试C++ python相关配置
c++·vscode·python
小章UPUP18 分钟前
2026 信息技术中考复习资料大全
python
2401_8822737218 分钟前
CSS 背景色无法撑满父容器?解决浮动导致的高度塌陷问题
jvm·数据库·python
好家伙VCC24 分钟前
上市公司产学研合作及专利数据(1998-2022年)
人工智能·python
weixin_3812881830 分钟前
jsoup如何读取html
jvm·数据库·python
2401_8822737236 分钟前
golang如何处理zip压缩包_golang zip压缩包处理思路
jvm·数据库·python