用Python定时发送图片到群消息,并艾特了所有人

用Python定时发送图片到群消息,并艾特了所有人

大家好

昨天关于excel自动化的那篇文章发出之后,感觉大家对这个还挺感兴趣,并且在才哥那边有好几位读者在追问如何实现图片自动发送

用Python定时发送图片到群消息,并艾特了所有人插图

说实话,有点惊讶大家对图片定时发送感兴趣,我原以为会有读者对模型的原理比较好奇呢

用Python定时发送图片到群消息,并艾特了所有人插图1

不过,既然大家问到了,今天也就来说说我自己在用的方法。

图片定时发送我已经用了一个多月了,目前用得挺好,没有出现什么奇怪的问题,所以这个方法应该也比较成熟,大家都可以自己去复现一下

当然了, 如果有比我分享的更好用的方法(肯定会有),可以在留言区留言,大家一起学习一下。

先说一下我的实现原理:上传图床+群机器人+定时发送

对了,在进行图片自动化发送的时候,我默认你是已经可以把excel表格转化成本地图片了

先来说第一个,图床

在自动化发送图片的时候,我在想一个问题:你要发的图片要能在线显示,或者在在线显示有问题的时候用户还可以点击链接查看。于是,必备的两个条件: 在线显示+链接

能完美解决上面的问题的,我能想到的有一个办法:图床

将图片上传到xxx图床平台,之后在访问的时候只需要点击该图片对应的访问url就行

一般常用的免费图床平台有 github、gitee、SMS 等等,还有一些像csdn、微博、知乎等可以用的,付费的像xx云平台这种,可能会更稳定,但是目前我用了一个月免费的,也没有发现什么问题,所以就不推荐大家去用付费的

刚开始的时候,我用的是github(因为一直在用github做代码管理),上传图片是没有什么问题,但是如果你没有访问工具,一般10次有9次图片是无法在线预览的,即使你使用url访问也会经常挂掉。

之后我去试了SMS图床,比github好点,但是偶尔还是会挂掉

最后我用了gitee,就再也没有发生过问题了。

总结,图床推荐大家用gitee,把你用excel生成的图片上传到gitee

需要注意图片的名称不能重复,最好是用时间戳命名

另外,如何上传图片到gitee,bing搜索关键字:上传图片到gitee,你会找到你想要的答案,不赘述了

再来说第二个,群机器人

如果你选择的是用邮件通知,可以参考以前写过的Python操作邮件发送的那篇文章

今天讲的是通过群机器人进行通知,这里的群可以是微信群也可以是钉钉群,推荐用后者。因为官方做了详细的接口,稍微设置一下,三两行代码就能直接用来发送群消息

首先我们打开钉钉,随便拉2个人,创建一个群聊,点击群设置中的智能群助手。

用Python定时发送图片到群消息,并艾特了所有人插图2

进入到机器人管理页面,点击添加机器人,进入机器人选择页面,这里选择自定义机器人。

用Python定时发送图片到群消息,并艾特了所有人插图3

需要给机器人修改头像和名称,在安全设置里面,建议最好把自定义关键字也勾选上,比如我这里设置的是:定时推送,然后其他的可以默认,点击完成后在新的页面有一个webhook

用Python定时发送图片到群消息,并艾特了所有人插图4

用Python定时发送图片到群消息,并艾特了所有人插图5

这个比较重要,后面要用到,一定要备份好

总结来说,这里需要注意的有两个: 一个机器人的webhook,一个是自定义关键字

再来说第三个,定时推送

这个我记得我有写过详细的教程,一篇是linux下的,基于cron服务进行程序的定时执行;一篇是window下,通过任务计划程序进行程序的定时执行。

感兴趣的可以点击学习下:

win10下自动化任务,五步快速实现linux下自动化任务,三步快速实现

这里,我直接贴如何调用上一步的webhook进行消息通知

我使用钉钉机器人的原因是官方做了非常详细的接口和使用文档,用两三行代码可以直接调用

以下是官方文档,非常详尽:

https://open.dingtalk.com/document/robots/custom-robot-access?spm=ding_open_doc.document.0.0.62846573TCzj7A#topic-2026027

因为机器人可以发送markdown形式的通知,而markdown是一种卡片式的、可以在线进行预览的消息通知,刚好就很适合我们这次的需求

对应的消息通知的格式化代码如下:

url = 'https://oapi.dingtalk.com/robot/send?access_token=' + token_dd
headers = {'Content-Type': 'application/json;charset=utf-8'}

data = {
"msgtype": "markdown",
"markdown": {
"title": "定时推送",
"text": "策略定时推送中,当前可操作:n {0} n 图片若无法查看,[请点击此处]({1}) nn请谨慎操作!!n".format(md_pic_url, pic_url)
},
"at": {
"isAtAll": at_all
},
}

res = requests.post(url, data=json.dumps(data), headers=headers)
print(res.text)

上面的代码中有四个参数需要设置,分别是: token_dd、md_pic_url、pic_url、at_all ,分别解释一下:

token_dd:上一步中webhook中的tokenat_all:是否@全体成员,True表示是pic_url:上传到图床的图片链接md_pic_url:markdown形式的图片链接,示例:![名称 ](pic_url)

需要注意你的通知内容中需要包含上一步设置的关键字,例如我将title的名字设置成了关键字 定时推送

上述操作你成功设置了之后,运行代码之后,你的钉钉群会收到这样一个消息通知:

用Python定时发送图片到群消息,并艾特了所有人插图6

图片下方有一个 请点击此处 的蓝色超链接 ,当钉钉群的图片因为网络波动的原因无法显示,群用户就可以通过点击这个链接进行查看

是不是很方便呢

用Python定时发送图片到群消息,并艾特了所有人插图7

用Python定时发送图片到群消息,并艾特了所有人插图8

以上就是本次的所有内容,感兴趣的同学可以实操一下, 也欢迎其他 有 更好用的方法的同学一起分享,下节见!

别光顾着收藏文章,点赞走起

用Python定时发送图片到群消息,并艾特了所有人插图9

分享到 :
相关推荐