Python / 脚本编程

通过Python发消息给企业微信机器人

浅时光 · 5月18日 · 2020年 · 9121次已读

一、创建机器人文章来源(Source):https://www.dqzboy.com

  • 登入到企业微信或者钉钉,创建群组(加你自己至少三人才能创建群聊),然后右键群组添加机器人,然后点击机器人配置,获取机器人的webhook文章来源(Source):https://www.dqzboy.com址并复制保存。
通过Python发消息给企业微信机器人-浅时光博客

二、编写Py脚本

  • 注意:需要安装requests 模块
[[email protected] ~]# 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()

[[email protected] ~]# chmod +x /script/python3/wechat.py 
[[email protected] ~]# /script/python3/wechat.py

三、查看消息

通过Python发消息给企业微信机器人-浅时光博客

四、结合定时任务

  • 现在我们可以通过定时发送消息到指定的工作群等,Linux环境下就是通过crontab调用该脚本定文章来源(Source):https://www.dqzboy.com时发送信息到工作群。
0 9 * * * /script/python3/wechat.py	#每天上午9点执行脚本

五、脚本升级改写

  • 上面我们是通过定时任务去推送消文章来源(Source):https://www.dqzboy.com息的,缺点就是不管是节假日还是工作日都会去推送消息;现在我们调用法定节假日AP文章来源(Source):https://www.dqzboy.comI文章来源(Source):https://www.dqzboy.com接口,进行判断是否为工作日或文章来源(Source):https://www.dqzboy.com是法定节假日,然后进行推送消息;
  • 这里我们想要实现的是,工作日则每天9点进行准时消息文章来源(Source):https://www.dqzboy.com推送(文章来源(Source):https://www.dqzboy.com里还是在定时任务里写死),而节假日则不进行推送消息。

1、改写代码

[[email protected] ~]# 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://www.dqzboy.com否会推送消息;
    • 2、调整时间为节假日时间,然后手动触发脚本,检查是否会推送消息。
  • 工作日
[[email protected] python3]# ./wechat.py 
0518
{"errcode":0,"errmsg":"ok"}
通过Python发消息给企业微信机器人-浅时光博客
  • 节假日
[[email protected] python3]# ./wechat.py 
0523   #非工作日企业微信收不到消息

通过Python发消息给企业微信机器人-浅时光博客
0 条回应
    本站已安全运行: | 耗时 0.391 秒 | 查询 105 次 | 内存 18.50 MB