Python第三方包之DingDingBot钉钉机器人


Posted in Python onApril 09, 2020

这个是作者自己封装的一个钉钉机器人的包,目前只支持发文本格式、链接格式、markdown格式的消息,我们可以在很多场景用到这个,比如告警通知等

安装

pip install DingDingBot

使用方法

from DingDingBot.DDBOT import DingDing
# 初始话DingDingBOt webhook是钉钉机器人所必须的
dd = DingDing(webhook='https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx')
# 发送文本消息
print(dd.Send_Text_Msg(Content='test:测试数据'))
# 发送链接消息
print(dd.Send_Link_Msg(Content='test',Title='测试数据',MsgUrl='https://www.baidu.com',PicUrl='https://cn.bing.com/images/search?q=outgoing%e6%9c%ba%e5%99%a8%e4%ba%ba&id=FEE700371845D9386738AAAA51DCC43DC54911AA&FORM=IQFRBA'))
# 发送Markdown格式的消息
print(dd.Send_MardDown_Msg(Content="# 测试数据\n" + "> testone", Title='测试数据'))

源码

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
  @@@@@@@@   @@@@@@@@@   @@@@@@@@@  @@@@@@@@@   @@@@@@@@@@@@
  @@   @@  @@   @@  @@   @@  @@   @@     @@
  @@    @@ @@    @@  @@  @@  @@    @@    @@
  @@    @@ @@    @@  @@  @@   @@    @@    @@
  @@    @@ @@    @@  @@ @@   @@    @@    @@
  @@   @@  @@   @@  @@ @@    @@    @@    @@
  @@   @@  @@   @@   @@ @@   @@    @@    @@
  @@  @@   @@  @@   @@  @@   @@    @@    @@
  @@  @@   @@  @@    @@ @@    @@   @@     @@
  @@ @@    @@ @@     @@      @@@@@@@@@     @@

'''

import requests, json


class DingDing():
  """
  # 钉钉官方文档
  Refer to official documentation: https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
  """
  # 初始化
  def __init__(self, webhook):
    self.webhook = webhook
    self.session = requests.session()
    self.session.headers = {"Content-Type": "application/json;charset=utf-8"}

  def Send_Text_Msg(self, Content: str, atMobiles: list = [], isAtAll: bool = False) -> dict:
    """
    :param content: 要发送的内容
    :param atMobiles: @指定的人,这里必须是列表,且参数为手机号
    :param isAtAll: @全体成员
    :return:
    """
    try:
      data = {
        "msgtype": "text",
        "text": {
          "content": Content
        },
        "at": {
          "atMobiles": atMobiles,
          "isAtAll": isAtAll
        }
      }
      response = self.session.post(self.webhook, data=json.dumps(data))
      if response.status_code == '200':
        result = {"status": True, "message": "Message has been sent"}
        return result
      else:
        return response.text
    except Exception as error:
      result = {"status": False, "message": f"Failed to send message,Error stack:{error}"}
      return result

  def Send_Link_Msg(self, Content: str, Title: str, MsgUrl: str, PicUrl: str = ''):
    """
    :param Content: 链接的内容
    :param title: 链接的标题
    :param MsgUrl: 待跳转页面的url
    :param PicUrl: 消息所展示的图片
    :return:
    """
    try:
      data = {
        "msgtype": "link",
        "link": {
          "text": Content,
          "title": Title,
          "picUrl": PicUrl,
          "messageUrl": MsgUrl
        }
      }
      response = self.session.post(self.webhook, data=json.dumps(data))
      if response.status_code == '200':
        result = {"status": True, "message": "Message has been sent"}
        return result
      else:
        return response.text
    except Exception as error:
      result = {"status": False, "message": f"Failed to send message,Error stack:{error}"}
      return result

  def Send_MardDown_Msg(self, Content: str, Title: str, atMobiles: list = [], isAtAll: bool = False):
    """
    :param Content: Markdown格式的文本,仅支持下面的格式
    '''
    标题
      # 一级标题
      ## 二级标题
      ### 三级标题
      #### 四级标题
      ##### 五级标题
      ###### 六级标题

      引用
      > A man who stands for nothing will fall for anything.

      文字加粗、斜体
      **bold**
      *italic*

      链接
      [this is a link](http://name.com)

      图片
      ![](http://name.com/pic.jpg)

      无序列表
      - item1
      - item2

      有序列表
      1. item1
      2. item2
    '''
    :param Title: 这个Markdown的标题
    :param atMobiles: @指定的人,这里必须是列表,且参数为手机号
    :param isAtAll: @全体成员
    :return:
    """
    try:
      data = {
        "msgtype": "markdown",
        "markdown": {
          "title": Title,
          "text": Content
        },
        "at": {
          "atMobiles": atMobiles,
          "isAtAll": isAtAll
        }
      }
      response = self.session.post(self.webhook, data=json.dumps(data))
      if response.status_code == '200':
        result = {"status": True, "message": "Message has been sent"}
        return result
      else:
        return response.text
    except Exception as error:
      result = {"status": False, "message": f"Failed to send message,Error stack:{error}"}
      return result

到此这篇关于Python第三方包之DingDingBot钉钉机器人的文章就介绍到这了,更多相关Python DingDingBot内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Ubuntu下安装PyV8
Mar 13 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
详解python的数字类型变量与其方法
Nov 20 Python
python 读取文件并替换字段的实例
Jul 12 Python
Django urls.py重构及参数传递详解
Jul 23 Python
Python中pymysql 模块的使用详解
Aug 12 Python
python程序 线程队列queue使用方法解析
Sep 23 Python
Tensorflow的梯度异步更新示例
Jan 23 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
opencv中图像叠加/图像融合/按位操作的实现
Apr 01 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
详解python datetime模块
Aug 17 Python
python实现简单学生信息管理系统
Apr 09 #Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
Apr 08 #Python
pycharm的python_stubs问题
Apr 08 #Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
Apr 08 #Python
解决pycharm下pyuic工具使用的问题
Apr 08 #Python
解决pyqt5异常退出无提示信息的问题
Apr 08 #Python
python由已知数组快速生成新数组的方法
Apr 08 #Python
You might like
为指定元素增加样式的js代码
2009/12/09 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
基于jQuery创建鼠标悬停效果的方法
2015/03/07 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
2019/08/16 Javascript
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
Python中的tuple元组详细介绍
2015/02/02 Python
Python实现曲线点抽稀算法的示例
2017/10/12 Python
python实现音乐下载器
2018/04/15 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
python中os包的用法
2020/06/01 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
优秀教师获奖感言
2014/01/31 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
班级文化标语
2014/06/23 职场文书
财务统计员岗位职责
2015/04/14 职场文书
2015年电教工作总结
2015/05/26 职场文书
美丽的大脚观后感
2015/06/03 职场文书
《童年的发现》教学反思
2016/02/18 职场文书
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫