• Python第三方包之DingDingBot


    Python第三方包之DingDingBot

    这个是作者自己封装的一个钉钉机器人的包,目前只支持发文本格式、链接格式、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="# 测试数据
    " + "> 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
    
    
  • 相关阅读:
    Android ListView嵌套Button,Button事件覆盖item事件解决办法
    android 再按一次退出程序(实现代码)
    Android 带checkbox的listView 实现多选,全选,反选
    Android调用第三方应用
    Android输入法界面管理(打开/关闭/状态获取)
    ViewPager的使用方法和实现过程
    安装pycharm 2018.3 Professional Edition
    layui和jquery冲突:Syntax error, unrecognized expression: +
    解决因为本地代码和远程代码冲突,导致git pull无法拉取远程代码的问题(转载)
    Object.assign()
  • 原文地址:https://www.cnblogs.com/jruing/p/12656726.html
Copyright © 2020-2023  润新知