python3实现钉钉消息推送的方法示例


Posted in Python onMarch 14, 2019

背景

偶然发现一个python实现的按照农历/阴历推送消息提醒的程序,钉钉群消息推送。此处总结并对其可推送的消息做。

DingtalkNotice

环境:python3.7

安装:

pip install schedule #实现定时任务的模块
pip install DingtalkChatbot #python封装的各种消息的调用
pip install sxtwl #日历库

钉钉自定义机器人:

钉钉群机器人是一个高级扩展的功能,可以将第三方服务的信息聚合到钉钉群众,实现信息的自动化同步。1、通过聚合Github、Gitlab等源码管理服务,实现源码更新的同步;2、通过聚合Trello、JIRA等项目协调服务,实现项目信息同步;3、支持Webhook协议的自定义接入,可实现比如运维报警提醒、自动化测试结果报告提醒、工作与生活日程安排(上下班打卡、纪念日、生日)等等的提醒,均可通过自定义机器人聚合到钉钉中。目前自定义机器人支持文本(text)、链接(link)、markdown三种消息格式,五种消息类型。参考官方链接:钉钉自定义机器人,官方对各种消息的调用只提供了Java语言的封装,Python的封装见参考链接:https://3water.com/article/156661.htm,项目源码:源码

python 实现推送生日提醒的消息的源码地址:DingtalkNotice

One2TwoDigit.py

import time
def One2TwoDigit(a):
  a= int(a)
  if a<10:
    a = '0'+str(a)
  else:
    a=a
  return str(a)
 
 
def addYear(monthDay):
  monthDay = (time.strftime("%Y")) + str(monthDay)
  return monthDay

differ_days.py

#coding:utf8 
import datetime
 
def date_part(date='20170301'):
  global year,month,day
  year=date[0:4]
  month_first=int(date[4:5])
  month = date[5:6]
  if month_first ==0:
    month = date[5:6]
  else :
    month = date[4:6]
 
  day=date[6:8]
  
  year = int(year)
  month = int(month)
  day = int(day)
  
  d = datetime.date(year,month,day)
  return d

birthday_notice.py

# -*- coding: UTF-8 -*-
'''
pip install DingtalkChatbot
pip install sxtwl
'''
 
from dingtalkchatbot.chatbot import DingtalkChatbot
import time
import sxtwl
lunar = sxtwl.Lunar() 
from One2TwoDigit import One2TwoDigit,addYear
from differ_days import date_part
import datetime
 
# 初始化机器人小丁
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=' #填写你自己创建的机器人
xiaoding = DingtalkChatbot(webhook)
 
ymc = ["11", "12", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10" ]
rmc = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"]  
def birthdayNotice_job(bri_name,bri_mon,bri_day,futureDays=3):
  print("birthdayNotice_job is working...")
  dayYinli2Yangli = lunar.getDayByLunar(int(time.strftime("%Y")), bri_mon, bri_day , False) #查询阴历2018年10月20日的信息,最后一个False表示是否是润月,填True的时候只有当年有润月的时候才生效
  yangliDay = (str(dayYinli2Yangli.y) + One2TwoDigit(str(dayYinli2Yangli.m)) + One2TwoDigit(str(dayYinli2Yangli.d)))
  yangliDayMsg ='农历:' + (str(bri_mon) + '月' + (str(bri_day)) + '日' )
  print(bri_name+'阳历生日是:'+yangliDay)
  d2 = date_part(yangliDay) 
  d1 = date_part(date=datetime.datetime.now().strftime('%Y%m%d'))
  differ_day = (d2 - d1).days
  
  if 0<differ_day<=futureDays:
    name = bri_name
    xiaoding.send_text(msg= yangliDayMsg + '是【' + name + '】的生日?\n再过' + str(differ_day) + '天就到了~\n', is_at_all=True)   # Text消息@所有人
    print(time.strftime("%Y-%m-%d") + name + '的生日提前提醒发送完毕~\n')
  elif differ_day==0 :
    name = bri_name
    xiaoding.send_text(msg='今天是【' + name + '】的生日?\n祝寿星生日快乐!\n', is_at_all=True)   # Text消息@所有人
    print(time.strftime("%Y-%m-%d") + name + '的当天生日提醒发送完毕~\n')

run.py

# -*- coding: utf-8 -*-
 
from birthday_notice import birthdayNotice_job
import schedule
import time
def run():
  print("定时任务开始...")
  f_douhao = open(r"data.csv","r")
  line_douhao = f_douhao.readlines()
  for i in range(6):
    bri_name = (line_douhao[i].split(";")[0])
    bri_mon = (line_douhao[i].split(";")[1])
    bri_day = (line_douhao[i].split(";")[2])
    birthdayNotice_job(bri_name,int(bri_mon),int(bri_day),futureDays=5)
  f_douhao.close()
 
schedule.every().day.at("16:49").do(run)
while True:
  schedule.run_pending()
  time.sleep(1)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python入门篇之文件
Oct 20 Python
Python打印scrapy蜘蛛抓取树结构的方法
Apr 08 Python
Fiddler如何抓取手机APP数据包
Jan 22 Python
python 性能提升的几种方法
Jul 15 Python
windows系统下Python环境的搭建(Aptana Studio)
Mar 06 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
Jan 05 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
Jul 16 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
Jan 20 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
Feb 15 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
Python 爬虫的原理
Jul 30 Python
详解Python做一个名片管理系统
Mar 14 #Python
在Python中使用Neo4j的方法
Mar 14 #Python
浅谈Python中eval的强大与危害
Mar 13 #Python
详解python中init方法和随机数方法
Mar 13 #Python
Python使用sqlalchemy模块连接数据库操作示例
Mar 13 #Python
python ---lambda匿名函数介绍
Mar 13 #Python
Python实现的列表排序、反转操作示例
Mar 13 #Python
You might like
用cookies来跟踪识别用户
2006/10/09 PHP
深入php之规范编程命名小结
2013/05/15 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
gulp构建小程序的方法步骤
2019/05/31 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
python的即时标记项目练习笔记
2014/09/18 Python
MySQL最常见的操作语句小结
2015/05/07 Python
用Python实现随机森林算法的示例
2017/08/24 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
Python高级property属性用法实例分析
2019/11/19 Python
numba提升python运行速度的实例方法
2021/01/25 Python
全球最大的游戏市场:G2A
2018/07/05 全球购物
如何写你的创业计划书
2014/01/07 职场文书
设计大赛策划方案
2014/06/13 职场文书
人事专员岗位说明书
2014/07/29 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
2014年材料员工作总结
2014/11/19 职场文书
简历自荐信范文
2015/03/09 职场文书
王亚平太空授课观后感
2015/06/12 职场文书
安全温馨提示语大全
2015/07/14 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫