Skip to content

钉钉群机器人

钉钉群自定义机器人发送通知
https://open.dingtalk.com/document/robots/custom-robot-access

1. 代码实现

python
import requests

# 群机器人设置中的自定义关键词
# 钉钉群必须要添加一个安全认证,咱们使用最简单易用的关键字
DINGDING_ROBOT_KEY = '随便'


def group_robot(msgtype, content, key, atuser=[]):
    """通过群机器人将消息发送到钉钉群
    msgtype 支持 text 和 markdown 格式
    key 是群机器人 webhook 地址
    atuser 表示@的人员,存储的是 userid 列表
    https://open.dingtalk.com/document/robots/custom-robot-access
    """

    if key.startswith('http'):
        url = key
    else:
        url = f'https://oapi.dingtalk.com/robot/send?access_token={key}'

    # 统一加上关键词
    content += '\n{}'.format(DINGDING_ROBOT_KEY)
    if msgtype == 'text':
        data = {
            'msgtype': 'text',
            'text': {
                'content': content,
            },
            'at': {
                'atUserIds': atuser,
            },
        }
    elif msgtype == 'markdown':
        data = {
            'msgtype': 'markdown',
            'markdown': {
                'title': '有消息',
                'text': content,
            },
            'at': {
                'atUserIds': atuser,
            },
        }
    r = requests.post(url, json=data)
    print(r.json())


if __name__ == '__main__':
    msgtype = 'text'
    content = '这是测试消息\nhttps://python-abc.xyz/'
    key = 'b0ed3887d8cf0128d2d57905b9b5abcdabcdcefe0db67253bfe67b985aeafca7'
    group_robot(msgtype, content, key)

2. 颜色支持

无内置颜色,但是支持 html<font> 标签:

html
<font color="#ff0000">红色</font>
<font color="#ffff00">黄色</font>
<font color="#00ff00">绿色</font>

核心就是要使用 <font> 标签的 color 属性,数值可调