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

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

前言

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

分析

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

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

详细设计

定时任务

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

go get -u github.com/robfig/cron/v3

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

c := cron.New()

c.AddFunc("@every 1s", func() {
   fmt.Println("hello")
})
    c.Start()

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

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

所以如果要在整点准时发送触发任务执行,只需设置时间表达式: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()
}

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

如果使用企业微信自己内部应用的话,使用消息推送可以专门给具体的用户发送消息,这样就可以实现对具体的同事或客户发送祝福语。详细企业微信接口地址: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
}

祝福大家新春快乐!!!

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

目录
相关文章
|
存储 前端开发 关系型数据库
Go 实现更换新春首页和皮肤配置
新春佳节到来了,各种 APP 的开启首页图片和皮肤样式都会发生变化,它们都将会更新成和新春有关系的图片广告或者新春相关的背景图片。当一个运营负责这项工作时,只需要开发一个可配置的功能,运营只需进行设置就可以完成新春首页替换和新年红皮肤更新。
138 0
我的Go+语言初体验——祝福留言小系统,让她也可以感受到你的祝福(上)
环境搭建 GO+版的祝福语管理系统 前期想法 界面展示 整体界面 增加祝福信息 修改操作 删除操作 退出
我的Go+语言初体验——祝福留言小系统,让她也可以感受到你的祝福(上)
|
2月前
|
存储 监控 算法
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
95 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
|
2月前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
4天前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
51 20
|
2天前
|
存储 监控 算法
探秘员工泄密行为防线:基于Go语言的布隆过滤器算法解析
在信息爆炸时代,员工泄密行为对企业构成重大威胁。本文聚焦布隆过滤器(Bloom Filter)这一高效数据结构,结合Go语言实现算法,帮助企业识别和预防泄密风险。通过构建正常操作“指纹库”,实时监测员工操作,快速筛查可疑行为。示例代码展示了如何利用布隆过滤器检测异常操作,并提出优化建议,如调整参数、结合日志分析系统等,全方位筑牢企业信息安全防线,守护核心竞争力。
|
10天前
|
Go C语言
Go语言入门:分支结构
本文介绍了Go语言中的条件语句,包括`if...else`、`if...else if`和`switch`结构,并通过多个练习详细解释了它们的用法。`if...else`用于简单的条件判断;`if...else if`处理多条件分支;`switch`则适用于基于不同值的选择逻辑。特别地,文章还介绍了`fallthrough`关键字,用于优化重复代码。通过实例如判断年龄、奇偶数、公交乘车及成绩等级等,帮助读者更好地理解和应用这些结构。
34 14
|
2月前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
124 71
|
2月前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
121 67

热门文章

最新文章