go 实现零点准时传递新春祝福

简介: 实现一个零点定时推送祝福的需求其实很简单,关键点是零点定时和推送消息出去两个功能。- 零点定时推送,可以使用 corn 包实现定时任务- 推送消息,调用飞书和企业微信提供的 webhook 接口,就可以实现消息的推送

前言

新年到了,自然新春祝福也是少不了的。为了能够准时给同事和客户发出自己的零点新春祝福,以此来表达自己的真诚祝福。所以准备在使用飞书和企业微信里的 webhook 功能实现零点准时发送新春祝福语。

分析

实现一个零点定时推送祝福的需求其实很简单,关键点是零点定时和推送消息出去两个功能。

  • 零点定时推送,可以使用 corn 包实现定时任务
  • 推送消息,调用飞书和企业微信提供的 webhook 接口,就可以实现消息的推送

详细设计

定时任务

安装 cron 包,然后就可以使用它创建一个简单的调度中心。

go get -u github.com/robfig/cron/v3
AI 代码解读

创建一个简单的任务调度可以直接使用 addFunc 方法。

c := cron.New()

c.AddFunc("@every 1s", func() {
   fmt.Println("hello")
})
    c.Start()
AI 代码解读

从上面简单的源码看到,其创建了一个每秒都会输出 hello 。@every 1s就是这个定时任务的触发事件。那么再看下 cron 官网中说明,触发时间支持 cron 表达式:

# 文件格式说明
┌──秒(0 - 59)
│ ┌──分钟(0 - 59)
│ │  ┌──小时(0 - 23)
│ │  │  ┌──日(1 - 31)
│ │  │  │  ┌─月(1 - 12)
│ │  │  │  │  ┌─星期(0 - 6,表示从周日到周六,该值不是非必需的)
│ │  │  │  │  │
* *  *  *  *  * 
AI 代码解读

所以如果要在整点准时发送触发任务执行,只需设置时间表达式:0 0 0 22 1 *。这样就可以在零点时间准时出发定时任务然后执行具体消息推送的功能。

消息推送

消息推送也是个比较简单的功能,就是通过http 请求hook 的地址发送消息。其中祝福语就可以自己编写好。

func sendMsg(apiUrl, msg string) {
    contentType := "application/json"
    sendData := `{
        "msg_type": "text",
        "content": {"text": "` + "六号积极分子的祝福:" + msg + `"}
    }`
    result, err := http.Post(apiUrl, contentType, strings.NewReader(sendData))
    if err != nil {
        fmt.Printf("post failed, err:%v\n", err)
        return
    }
    defer result.Body.Close()
}
AI 代码解读

使用自己编写好的祝福语在零点时候发送出去更加能体现自己的真诚。

如果使用企业微信自己内部应用的话,使用消息推送可以专门给具体的用户发送消息,这样就可以实现对具体的同事或客户发送祝福语。详细企业微信接口地址:https://developer.work.weixin.qq.com/document/path/90236#%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF

请求方式:POST(HTTPS)
请求地址: https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN
文本消息:
{
   "touser" : "UserID1|UserID2|UserID3",
   "toparty" : "PartyID1|PartyID2",
   "totag" : "TagID1 | TagID2",
   "msgtype" : "text",
   "agentid" : 1,
   "text" : {
       "content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href="http://work.weixin.qq.com">邮件中心视频实况</a>,聪明避开排队。"
   },
   "safe":0,
   "enable_id_trans": 0,
   "enable_duplicate_check": 0,
   "duplicate_check_interval": 1800
}
AI 代码解读

祝福大家新春快乐!!!

源码在马上掘金上:https://code.juejin.cn/pen/7194483912859451451

目录
打赏
0
0
0
0
44
分享
相关文章
Go 实现更换新春首页和皮肤配置
新春佳节到来了,各种 APP 的开启首页图片和皮肤样式都会发生变化,它们都将会更新成和新春有关系的图片广告或者新春相关的背景图片。当一个运营负责这项工作时,只需要开发一个可配置的功能,运营只需进行设置就可以完成新春首页替换和新年红皮肤更新。
133 0
我的Go+语言初体验——祝福留言小系统,让她也可以感受到你的祝福(上)
环境搭建 GO+版的祝福语管理系统 前期想法 界面展示 整体界面 增加祝福信息 修改操作 删除操作 退出
我的Go+语言初体验——祝福留言小系统,让她也可以感受到你的祝福(上)
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
85 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
|
2月前
|
go语言中数组和切片
go语言中数组和切片
47 7
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
2月前
|
go语言中结构体(Struct)
go语言中结构体(Struct)
116 71
|
2月前
|
go语言中的数组(Array)
go语言中的数组(Array)
117 67
内网监控系统之 Go 语言布隆过滤器算法深度剖析
在数字化时代,内网监控系统对企业和组织的信息安全至关重要。布隆过滤器(Bloom Filter)作为一种高效的数据结构,能够快速判断元素是否存在于集合中,适用于内网监控中的恶意IP和违规域名筛选。本文介绍其原理、优势及Go语言实现,提升系统性能与响应速度,保障信息安全。
22 5
Go语言中的加密和解密是如何实现的?
Go语言通过标准库中的`crypto`包提供丰富的加密和解密功能,包括对称加密(如AES)、非对称加密(如RSA、ECDSA)及散列函数(如SHA256)。`encoding/base64`包则用于Base64编码与解码。开发者可根据需求选择合适的算法和密钥,使用这些包进行加密操作。示例代码展示了如何使用`crypto/aes`包实现对称加密。加密和解密操作涉及敏感数据处理,需格外注意安全性。
38 14
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等