先上效果图:
代码实现:
注意:不可直接复制代码运行,需填入api网站的key、及钉钉机器人的token地址
from dingtalkchatbot.chatbot import DingtalkChatbot
from apscheduler.schedulers.blocking import BlockingScheduler
import requests
from urllib import parse
import re
import time
import hmac
import hashlib
import base64
import urllib
'''目标:钉钉机器人定时发送笑话到钉钉群里 并@所有人'''
# 请求随机笑话接口 并返回标题和函数
def rand_joke():
url = 'http://api.tianapi.com/txapi/joke/index'
params = {
'key':'你的key',
'num':1
}
params = parse.urlencode(params)
f = requests.get('%s?%s' % (url, params))
jokelist = f.json()['newslist'][0]
joke_content = re.sub('<br/>','',jokelist['content'])
return '\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t%s\n\t\t%s'%(jokelist['title'],joke_content)
# 获取时间戳和密钥 用来拼接钉钉机器人webhook
def get_parameter():
timestamp = str(round(time.time() * 1000))
secret = 'this is secret'
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))
return timestamp,sign
# 拼接机器人api 并发送消息
def send():
webhook = '' \
'https://oapi.dingtalk.com/robot/send?' \
'access_token=你的机器人token地址' \
'×tamp=%s&sign=%s'%get_parameter()
xiaoding = DingtalkChatbot(webhook)
xiaoding.send_text(rand_joke(),is_at_all=True)
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())),'执行完毕')
# 定时函数 设置每分钟执行一次
block = BlockingScheduler()
block.add_job(send,'interval',minutes=1)
block.start()