Python 钉钉机器人定时发送笑话到钉钉群里 并@所有人

本文介绍了一种使用Python编程语言实现的方案,通过调用天API的随机笑话接口,并结合钉钉机器人的功能,定时将笑话推送到指定的钉钉群聊中,同时@所有人。文章详细展示了代码实现过程,包括获取随机笑话、生成时间戳和密钥、拼接机器人API以及使用BlockingScheduler进行定时任务设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先上效果图:

代码实现:

注意:不可直接复制代码运行,需填入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地址' \ 
              '&timestamp=%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()

PyCharm工作台打印如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值