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 相关文章推荐
在Python中使用poplib模块收取邮件的教程
Apr 29 Python
python登录豆瓣并发帖的方法
Jul 08 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
详谈Python基础之内置函数和递归
Jun 21 Python
Python实现按逗号分隔列表的方法
Oct 23 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 Python
浅谈TensorFlow中读取图像数据的三种方式
Jun 30 Python
Python3如何使用多线程升程序运行速度
Aug 11 Python
python判断all函数输出结果是否为true的方法
Dec 03 Python
Python Selenium库的基本使用教程
Jan 04 Python
python实现调用摄像头并拍照发邮箱
Apr 27 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
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
BBS(php & mysql)完整版(七)
2006/10/09 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
JS实现的对象去重功能示例
2019/06/04 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
Python生成验证码实例
2014/08/21 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
Python中安装easy_install的方法
2018/11/18 Python
详解Python中pandas的安装操作说明(傻瓜版)
2019/04/08 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
对Python _取log的几种方式小结
2019/07/25 Python
python下载库的步骤方法
2019/10/12 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
Python里面search()和match()的区别
2016/09/21 面试题
安全检查与奖惩制度
2014/01/23 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
滴水洞导游词
2015/02/10 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python