Python实现企业微信机器人每天定时发消息实例


Posted in Python onFebruary 25, 2020

1、背景

由于办公需要“每天定时推送某消息用来提醒群里面所有人”,于是决定用企业微信自带的机器人来实现此功能。具体方法我来一一讲述。

2、企业微信API

具体见官网说明:https://work.weixin.qq.com/help?person_id=1&doc_id=13376

3、想法

想到几种方式:

直接写个sh脚本,并用linux定时器执行此脚本就可以了。这种方式简单实用,不过缺点就是修改起来稍微麻烦一点写个Qt/VS客户端程序,做好页面和每天想推送的内容,还是有点麻烦直接写个后台程序,指定时间推消息吧,稍微快些(用Python更快)

4、效果

Python实现企业微信机器人每天定时发消息实例

5、源代码

#! -*- coding: utf-8 -*-
"""
Author: ZhenYuSha
Create type_time: 2020-2-24
Info: 定期向企业微信推送消息
"""
import requests, json
import datetime
import time

wx_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4baf3c3c-f3ea-4554-9a45-9fbbb2076269"  # 测试机器人1号
send_message = "测试:测试机器人1号………………………………!"


def get_current_time():
  """获取当前时间,当前时分秒"""
  now_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  hour = datetime.datetime.now().strftime("%H")
  mm = datetime.datetime.now().strftime("%M")
  ss = datetime.datetime.now().strftime("%S")
  return now_time, hour, mm, ss


def sleep_time(hour, m, sec):
  """返回总共秒数"""
  return hour * 3600 + m * 60 + sec


def send_msg(content):
  """艾特全部,并发送指定信息"""
  data = json.dumps({"msgtype": "text", "text": {"content": content, "mentioned_list":["@all"]}})
  r = requests.post(wx_url, data, auth=('Content-Type', 'application/json'))
  print(r.json)


def every_time_send_msg(interval_h=0, interval_m=1, interval_s=0, special_h="00", special_m="00", mode="special"):
  """每天指定时间发送指定消息"""

  # 设置自动执行间隔时间
  second = sleep_time(interval_h, interval_m, interval_s)
  # 死循环
  while 1 == 1:
    # 获取当前时间和当前时分秒
    c_now, c_h, c_m, c_s = get_current_time()
    print("当前时间:", c_now, c_h, c_m, c_s)
    if mode == "special":
      if c_h == special_h and c_m == special_m:
        # 执行
        print("正在发送...")
        send_msg(send_message)
    else:
      send_msg(send_message)
    print("每隔" + str(interval_h) + "小时" + str(interval_m) + "分" + str(interval_s) + "秒执行一次")
    # 延时
    time.sleep(second)


if __name__ == '__main__':
  every_time_send_msg(mode="no")

6、Github源码分享

代码已上传至Github:https://github.com/ShaShiDiZhuanLan/Demo_QY_WX

7、具体步骤

7.1、创建一个群

最好是一个人的群,方便测试

Python实现企业微信机器人每天定时发消息实例

7.2、创建好后,添加一个群机器人

Python实现企业微信机器人每天定时发消息实例

7.3、给机器人起名字、添加头像

Python实现企业微信机器人每天定时发消息实例

7.4、创建好后,复制Webhook地址后,点完成

Python实现企业微信机器人每天定时发消息实例

7.5、配置程序到supervisor中启动

具体ini配置:

[program:Demo_QY_WX]
directory = /root/software/python_Demo/Demo/Demo_QY_WX/
command= python3 -u Demo_QY_WX.py
autostart = true
autorestart=true
startsecs = 5
user =root
redirect_stderr = true
stdout_logfile = /data/logs/supervisord/Demo_QY_WX.log

[group:Demo]
programs=Demo_QY_WX ;server,progname2 each refers to 'x' in [program:x] definitions
priority=999         ; the relative start priority (default 999)

别忘了update一下哈。

使用supervisor的具体方法,在我这篇文章中有讲过:https://3water.com/article/181255.htm

7.6、完成

over,你可以在企业微信上每天指定时间推送消息,也可以间隔时间推送消息咯。

到此这篇关于Python实现企业微信机器人每天定时发消息实例的文章就介绍到这了,更多相关Python 微信机器人定时发消息内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python判断、获取一张图片主色调的2个实例
Apr 10 Python
Python Property属性的2种用法
Jun 21 Python
Python 常用 PEP8 编码规范详解
Jan 22 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
python过滤中英文标点符号的实例代码
Jul 15 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
python Tornado框架的使用示例
Oct 19 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 Python
python爬取2021猫眼票房字体加密实例
Feb 19 Python
PyTorch 如何检查模型梯度是否可导
Jun 05 Python
Django 设置多环境配置文件载入问题
Feb 25 #Python
python中resample函数实现重采样和降采样代码
Feb 25 #Python
python实现的分层随机抽样案例
Feb 25 #Python
Python可变对象与不可变对象原理解析
Feb 25 #Python
Python 使用 environs 库定义环境变量的方法
Feb 25 #Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 #Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 #Python
You might like
十天学会php(3)
2006/10/09 PHP
php截取后台登陆密码的代码
2012/05/05 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
chrome原生方法之数组
2011/11/30 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
深入理解JavaScript程序中内存泄漏
2016/03/17 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
SeaJS中use函数用法实例分析
2017/10/10 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
es6数值的扩展方法
2019/03/11 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
Vue常用的全选/反选的示例代码
2020/02/19 Javascript
在antd中setFieldsValue和defaultVal的用法
2020/10/29 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
[56:18]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python类的专用方法实例分析
2015/01/09 Python
详解Python的Django框架中的Cookie相关处理
2015/07/22 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
区域销售经理岗位职责
2013/12/10 职场文书
销售工作岗位职责
2013/12/24 职场文书
互联网创业计划书的书写步骤
2014/01/28 职场文书
《路旁的橡树》教学反思
2014/04/07 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书