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中的Matplotlib模块入门教程
Apr 15 Python
python学习之第三方包安装方法(两种方法)
Jul 30 Python
Python字典数据对象拆分的简单实现方法
Dec 05 Python
pandas全表查询定位某个值所在行列的方法
Apr 12 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
Python GUI学习之登录系统界面篇
Aug 21 Python
解决windows下python3使用multiprocessing.Pool出现的问题
Apr 08 Python
python语言的优势是什么
Jun 17 Python
Python eval函数原理及用法解析
Nov 14 Python
python获取天气接口给指定微信好友发天气预报
Dec 28 Python
Python中super().__init__()测试以及理解
Dec 06 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
这部番真是良心,画质好到像风景区,剧情让人跟着小公会热血沸腾
2020/03/10 日漫
php数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
JavaScript For Beginners(转载)
2007/01/05 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
常用jQuery代码分享
2015/07/14 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
Bootstrap中CSS的使用方法
2016/02/17 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
Python基础知识_浅谈用户交互
2017/05/31 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
Scrapy框架使用的基本知识
2018/10/21 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
如何真正的了解python装饰器
2020/08/14 Python
社区十八大感言
2014/01/19 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
2014公司年终工作总结
2014/12/19 职场文书
旅游安全责任协议书
2016/03/22 职场文书
2019 入党申请书范文
2019/07/10 职场文书
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server