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中使用urllib2防止302跳转的代码例子
Jul 07 Python
python中xrange用法分析
Apr 15 Python
Python实现提取谷歌音乐搜索结果的方法
Jul 10 Python
用python实现百度翻译的示例代码
Mar 09 Python
Python中偏函数用法示例
Jun 07 Python
python用post访问restful服务接口的方法
Dec 07 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
简单了解python中的f.b.u.r函数
Nov 02 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
Jun 02 Python
python 常见的排序算法实现汇总
Aug 21 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
Dec 08 Python
Python基础之pandas数据合并
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
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
laravel 时间格式转时间戳的例子
2019/10/11 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
jQuery插件pagination实现分页特效
2015/04/12 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
js编写简单的计时器功能
2017/07/15 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
vue-ajax小封装实例
2017/09/18 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
Django 连接sql server数据库的方法
2018/06/30 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
手写一个python迭代器过程详解
2019/08/27 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
如何利用python进行时间序列分析
2020/08/04 Python
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
个人银行贷款担保书
2014/04/01 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
财产分割协议书范本
2014/11/03 职场文书
党支部综合考察意见
2015/06/01 职场文书
二胎满月酒致辞
2015/07/29 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
Redis持久化与主从复制的实践
2021/04/27 Redis
sql中mod()函数取余数的用法
2021/05/29 SQL Server
Python+Appium自动化测试的实战
2021/06/30 Python
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL