此機器人只能向群內推送消息,不支持應答。
話不多說,先上代碼。
import requests import json import time import hmac import hashlib import base64 import urllib.parse from bs4 import BeautifulSoup import random import time # 簽名 def sign(secret,timestamp): secret_enc = secret.encode('utf-8') string_to_sign = '{}\n{}'.format(timestamp, secret) string_to_sign_enc = string_to_sign.encode('utf-8') hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest() sign = urllib.parse.quote_plus(base64.b64encode(hmac_code)) # print(timestamp) # print(sign) sign_str= {"sign": sign,"timestamp":timestamp} return sign_str # 釘釘消息 def send_msg(sign,timestamp): tim = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) headers = {"Content-Type": "application/json"} readData = EveryDayStudy() imgurl = getImgUrl() data = { "msgtype": "markdown", "markdown": { "title":"每日一讀", "text": "#### 今日雞湯 \n> "+readData+" \n\n>  \n> ###### "+tim+" [更多](http://www.duanmeiwen.com/yulu/lizhi/46345.html) \n" }, # @群內人員 # "at": { # "atMobiles": [ # "150XXXXXXXX" # ], # "atUserIds ": [ # "user123" # ], # "isAtAll": false # } } webh = webhook+'×tamp='+timestamp+'&sign='+sign r = requests.post(webh, data=json.dumps(data), headers=headers) print(r.text) # 每日一讀 文字 def EveryDayStudy(): num = random.randint(1,299) res = requests.get('http://www.duanmeiwen.com/yulu/lizhi/46345.html') res.encoding = 'gb2312' bs = BeautifulSoup(res.text, "html.parser") Datalist = [] for i in bs.find_all("div", class_="content"): text1 = i.text for j in range(1,300,1): text2= text1.split(str(j)+'、') text3= text2[1].split(str(j+1)+'、') Datalist.append(text3[0]) return Datalist[num] # 圖片 def getImgUrl(): img=[] num = random.randint(1,17) headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36', 'Content-Type':"text/html; charset=utf-8" } req_url= 'https://www.ivsky.com/bizhi/fengjing/' res = requests.get(url=req_url,headers=headers) res.encoding = 'utf-8' bs = BeautifulSoup(res.text, "html.parser") for i in bs.find_all("img"): imgtext = i imgstr = str(imgtext).split(' src="') imgstr1=imgstr[1].split('"/>') imgurl = 'https:'+imgstr1[0] img.append(imgurl) return img[num] # 時間戳 timestamp = str(round(time.time() * 1000)) # 釘釘機器人配置 secret = '此處填寫加簽的秘鑰' webhook = 'https://oapi.dingtalk.com/robot/send?access_token=XXXXXX' sign_str =sign(secret,timestamp) sg = sign_str['sign'] send_msg(sg,timestamp)
下面簡單介紹一下,向釘釘群推送消息是通過釘釘群機器人發送消息的,所以首先需要在測試群內新增一個機器人
步驟一:【電腦釘釘 】-【群聊】-【群設置】-【智能群助手】-【添加更多】-【添加機器人】-【自定義】-【添加】,編輯機器人名稱和選擇添加的群組。
步驟二:安全設置,可以選擇自定義關鍵詞和加簽(腳本需要用到加簽的秘鑰)
如果機器人的配置不了解的話,請自行百度。
首先簽名部分,可以在釘釘文檔中找到,需要用到的是一個時間戳和加簽的秘鑰
然后發送釘釘消息部分,也需要這個時間戳,然后還需要一個簽名得到的sign。
需要發送的文字和圖片都是網上爬取的。
另外需要注意的是,發送消息的title是需要填新增機器人填寫的關鍵字的,填錯是發送不了消息的
最后一步,設置定時發送,如果條件允許,可以布置到Jenkins上
如果不能配置到Jenkins上,那就退而求其次了,在自己電腦上配置定時任務
具體的方法可以百度一下
https://www.it610.com/article/1298533114234085376.htm
https://jingyan.baidu.com/article/5d6edee227e38dd8ebdeec2f.html