一、创建机器人
登入到企业微信或者钉钉,创建群组(加你自己至少三人才能创建群聊),然后右键群组添加机器人,然后点击机器人配置,获取机器人的webhook
地址并复制保存。

二、编写Py脚本
注意:需要安装 requests
模块
1、发送文本类型
[root@localhost ~]# vim /script/python3/wechat.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import requests
import json
def wechatwork():
webhook = "企业微信机器人的webhook"
header = {
"Content-Type": "application/json",
"Charset": "UTF-8"
}
tex = "今天是个好日子,加油,DqzBoy"
message ={
"msgtype": "text",
"text": {
"content": tex
},
"at": {
"isAtAll": True
}
}
message_json = json.dumps(message)
info = requests.post(url=webhook,data=message_json,headers=header)
print(info.text)
if __name__=="__main__":
wechatwork()
2、发送图片类型
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import requests
import json
def wechatwork():
#机器人webhook
webhook = "#机器人webhook"
header = {
"Content-Type": "application/json",
"Charset": "UTF-8"
}
message ={
"msgtype": "news",
"news": {
"articles" : [
{
"title" : "dqz个人博客", ##标题
"description" : "欢迎访问", ##描述信息
"url" : "https://www.dqzboy.com/", ##点击跳转的链接
"picurl" : "https://www.dqzboy.com/blog.jpg" #图片存储路径
}
]
}
}
message_json = json.dumps(message)
info = requests.post(url=webhook,data=message_json,headers=header)
print(info.text)
if __name__=="__main__":
wechatwork()
3、参数说明


三、查看消息
[root@localhost ~]# chmod +x /script/python3/wechat.py
[root@localhost ~]# /script/python3/wechat.py
1、文本消息

2、图文消息

四、结合定时任务
- 现在我们可以通过定时发送消息到指定的工作群等,Linux环境下就是通过crontab调用该脚本定时发送信息到工作群。
0 9 * * * /script/python3/wechat.py #每天上午9点执行脚本
五、脚本升级改写
- 上面我们是通过定时任务去推送消息的,缺点就是不管是节假日还是工作日都会去推送消息;现在我们调用法定节假日API接口,进行判断是否为工作日或是法定节假日,然后进行推送消息;
- 这里我们想要
文章来源(Source):https://dqzboy.com 实现的是,工作日则每天9点进行准时消息推送(这里还是在定时任务里写死),而节假日则不进行推送消息。
1、改写代码
[root@localhost ~]# vim /script/python3/wechat.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import requests
import time
import time,datetime #获取当前系统的时间和日期
import json
holiday_info = {}
#定义年份
CUR_YEAR = '2020'
#企业微信webhook
WORK_WX_URL = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx'
#发送消息到企业机器人,定义信息类型
def post_to_wx(content):
data = {
"msgtype": "text",
"text": {
"content": content,
"mentioned_list":["@all"],
}
}
headers = {'Content-Type':'application/object'}
jdata = json.dumps(data)
jdata = bytes(jdata, encoding="utf8")
rep = requests.post(url=WORK_WX_URL, data=jdata, headers=headers)
#获取法定节假日信息
def init_holiday_info():
global holiday_info
rep = requests.get('http://tool.bitefu.net/jiari/?d=' + CUR_YEAR)
info_txt = rep.content.decode()
holiday_info = json.loads(info_txt)
#判断是否为工作日
def check_if_is_work_day():
day_info = time.strftime("%m%d",time.localtime(time.time()))
print(day_info) #将当前日志打印出来
if day_info in holiday_info[CUR_YEAR]:
return False
week = datetime.datetime.now().weekday()
if 0 <= week and 4 >= week:
#定义发送的信息内容
post_to_wx('今天是个好日子,加油,DqzBoy')
return False
if __name__ == "__main__":
init_holiday_info()
check_if_is_work_day()
2、脚本测试
- 这里我们将系统时间进行调整
- 1、先调整为工作日时间,然后手动触发脚本,检查是否会推
文章来源(Source):https://dqzboy.com 送消息; - 2、调整时间为节假日时间,然后手动触发脚本,检查是否会推送消息。
- 1、先调整为工作日时间,然后手动触发脚本,检查是否会推
- 工作日
[root@localhost python3]# ./wechat.py
0518
{"errcode":0,"errmsg":"ok"}

- 节假日
[root@localhost python3]# ./wechat.py
0523 #非工作日企业微信收不到消息