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将人民币转换大写的脚本代码
Feb 10 Python
python网络编程学习笔记(六):Web客户端访问
Jun 09 Python
用Python实现随机森林算法的示例
Aug 24 Python
详解python里使用正则表达式的分组命名方式
Oct 24 Python
Python3随机漫步生成数据并绘制
Aug 27 Python
Python设计模式之策略模式实例详解
Jan 21 Python
Python如何用filter函数筛选数据
Mar 05 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
python用tkinter实现一个简易能进行随机点名的界面
Sep 27 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
Feb 27 Python
PyTorch dropout设置训练和测试模式的实现
May 27 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 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
图形数字验证代码
2006/10/09 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
PHP多例模式介绍
2013/06/24 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
PHP  Yii清理缓存的实现方法
2016/11/10 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
JS重要知识点小结
2011/11/06 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
2016/05/10 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
微信小程序实现人脸检测功能
2018/05/25 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
浅谈django中的认证与登录
2016/10/31 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
项目副经理岗位职责
2013/12/30 职场文书
吨的认识教学反思
2014/04/27 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript