专栏文章 [小工具] 使用钉钉机器人 + 定时任务 (百分百偷懒快乐~)

青禾 · 2020年12月14日 · 2137 次阅读
  • 语言:Python
  • 使用库:dingtalkchatbot configparser

1、工作中的具体需求(解决什么问题)

(1)每周一提醒业务组同事创建日报 wiki
(2)每周三提醒开发 owner 查看 bugly 问题
(3)每周五提醒学习小组 owner 组织分享
......等等诸如此类的需求

2、整体思路(需要做什么)

(1)发钉钉通知、确定通知内容、通知谁
(2)发送时间

3、有哪些解决方法

(1)钉钉通知
钉钉公开 API
dingtalkchatbot(基于官方 AP 二次 I 封装)

(2)定时任务
python 定时任务 (sleep / Timer / schedule / APScheduler)
jenkisn 日程表

最后的选择:

  • dingtalkchatbot + jenkisn 定时任务

4、具体实现

(1)钉钉通知

  • 添加 webhook
  • 添加固定通知内容
from dingtalkchatbot.chatbot import DingtalkChatbot
from configparser import ConfigParser

class weekly():
    def weeklyAlert(self, webhook, phone):
        webhook = webhook
        dingding = DingtalkChatbot(webhook)

        # 发送 link消息
        dingding.send_link(title='Python小助手', text='点击这里,查看本周的Python分享', message_url='https://wiki.lalal.ccc')
        # 发送 Text消息@某人
        at_mobiles = [phone]
        dingding.send_text(msg='本周Python小助手', at_mobiles=at_mobiles)

        print("phone : " + str(phone))
        print(str("提醒成功"))

    def read_config(self, cfg_file):
        cfg = ConfigParser()
        cfg.read(cfg_file)
        return cfg

weekly = weekly()
cfg = weekly.read_config("/Users/test/Documents/weekly_base/weekphone.ini")
count = cfg.get('weekly', 'count')
webhook_week = 'https://oapi.dingtalk.com/robot/send?access_token=xxx'

if count == '0':
    phone = '189xxx' # nico
    weekly.weeklyAlert(webhook_week, phone)
    cfg.set('weekly', 'count', '1')
    cfg.write(open("/Users/test/Documents/weekly_base/weekphone.ini", "w"))

else :
    phone = '158xxx' # budy
    weekly.weeklyAlert(webhook_week, phone)
    cfg.set('weekly', 'count', '0')
    cfg.write(open("/Users/test/Documents/weekly_base/weekphone.ini", "w"))

(2)更新通知人

  • 通过 config 替换
[weekly]
count = 3

(2)定时提醒

  • jenkins 日程表
  • H 9 1-7,15-21 * 1 在这里插入图片描述

最终效果

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册