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里大整数相乘相关技巧指南
Sep 12 Python
python实现杨辉三角思路
Jul 14 Python
Sublime开发python程序的示例代码
Jan 24 Python
基于python中theano库的线性回归
Aug 31 Python
Python将列表数据写入文件(txt, csv,excel)
Apr 03 Python
python面向对象 反射原理解析
Aug 12 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
python中线程和进程有何区别
Jun 17 Python
Python可以用来做什么
Nov 23 Python
python requests库的使用
Jan 06 Python
Python图片检索之以图搜图
May 31 Python
Python办公自动化解决world文件批量转换
Sep 15 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
在php中取得image按钮传递的name值
2006/10/09 PHP
一段php加密解密的代码
2007/07/16 PHP
PHP 实例化类的一点摘记
2008/03/23 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
php实现cookie加密的方法
2015/03/10 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
php7下的filesize函数
2019/09/30 PHP
任意位置显示html菜单
2007/02/01 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
nodejs和react实现即时通讯简易聊天室功能
2019/08/21 NodeJs
深入理解令牌认证机制(token)
2019/08/22 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
用python实现面向对像的ASP程序实例
2014/11/10 Python
详解如何使用Python编写vim插件
2017/11/28 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
对python中Json与object转化的方法详解
2018/12/31 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
python实现对输入的密文加密
2019/03/20 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
python3下pygame如何实现显示中文
2020/01/11 Python
银行财务部实习生的自我鉴定
2013/11/27 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
小学英语复习计划
2015/01/19 职场文书
付款承诺函范文
2015/01/21 职场文书
深入理解python协程
2021/06/15 Python
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript