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中用Descriptor实现类级属性(Property)详解
Sep 18 Python
Python使用urllib2模块实现断点续传下载的方法
Jun 17 Python
python函数式编程学习之yield表达式形式详解
Mar 25 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
python如何求解两数的最大公约数
Sep 27 Python
Python中logging实例讲解
Jan 17 Python
详解Python读取yaml文件多层菜单
Mar 23 Python
使用OpenCV circle函数图像上画圆的示例代码
Dec 27 Python
使用遗传算法求二元函数的最小值
Feb 11 Python
python3的pip路径在哪
Jun 23 Python
python利用线程实现多任务
Sep 18 Python
Python语言中的数据类型-序列
Feb 24 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
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
js显示当前日期时间和星期几
2015/10/22 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
使用python实现拉钩网上的FizzBuzzWhizz问题示例
2014/05/05 Python
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
python实现剪切功能
2019/01/23 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
Django中使用MySQL5.5的教程
2019/12/18 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
高级销售求职信
2014/02/21 职场文书
遵纪守法演讲稿
2014/05/23 职场文书
工会主席事迹材料
2014/06/03 职场文书
党的群众路线教育实践活动对照检查材料(个人)
2014/09/24 职场文书
工作时间调整通知
2015/04/24 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
详解thinkphp的Auth类认证
2021/05/28 PHP
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL