当前位置: 首页 > 后端技术 > Node.js

记得一个钉钉机器人诞生的自动提醒

时间:2023-04-03 23:32:19 Node.js

背景最近项目不是很忙,所以决定利用这难得的空闲时间,充分利用之前一直在看的nodeJs,于是打算写一个钉钉机器人项目,每天在指定的时间提醒一些事情。代码逻辑就这么简单,关于如何申请和添加机器人入群就不赘述了。有兴趣的可以百度或者参考官方教程。整个代码的逻辑非常简单:使用superagent作为代理发起请求,在指定时间内调用接口发送消息。因为我是node新手,还是踩了很多坑。..一开始使用setinterval函数来处理每日定时发送,由于只需要在工作日发送,所以需要调用第三方接口判断当前日期是否为工作日。使用setInterval接口感觉有点傻,需要不断轮流训练,判断时分是否满足预定义的时间。..下面是判断时间的原代码:functionisTimeNow(){lettext='';常量现在=时刻();consthour=now.hour();constminute=now.minute();logger.info(`current是一天中的${hour}小时`);if(hour===9&&minute>10&&minute<20){//在9:10--9:20之间text='去上班,不要忘记登录..';}elseif(hour===18&&minute>30&&minute<40){//between6:30-6:40text='Offwork,don'tforgettosignin..';}logger.info(`要发送的消息内容为:${text}`);如果(文本){sendMsg(文本,webhock);}}也可以优化。我用java用corn来执行定时任务。它应该得到节点的支持。查找后发现果然不出所料,发现node-schedule库是一个支持corn来执行定时任务的。果断放弃setInterval。这样代码就省去了很多判断时间的代码,直接初始化一个task,一行就可以搞定:schedule.scheduleJob('00309***',doSchedule);为什么失败ok,至此代码基本完成,接下来就是部署执行了。首先,使用node在本地终端执行脚本。群里果然收到消息,一切正常完美!顺利部署到云端(腾讯云),正常接收消息,完美!!我可以去散步吗?散步回来后,悲剧了。为什么序列的消息过了一段时间就消失了?服务器关闭?被黑了吗?以这个项目的价值来看,被黑的可能性基本不存在,腾讯云一般应该不会死。..一位著名的小学生曾经说过:排除了所有的可能性之后,最不可能的就是真相。事实很残酷:有一个错误。..让我们调整错误。调了半天,发现没问题。查看过程,发现腾讯云远程会在一段时间后自动断开连接。再次连接后,原来的进程会被关闭。...搜索了一下,发现原来进程分为后台和前台(姿势又上升了)。终端关闭时,终端中执行的命令也随之关闭。如果你不想关闭它,你不能简单地使用节点命令。..问题很明确,很快就能解决。在终端执行如下命令:nodeindex.js&//启动后台basedisown//预调到后台进程ps-ax:查看所有进程信息ps-f-Cnode:查看节点信息参考链接不足暂时这个东西满足需求。但是由于所有的提示信息都是硬编码的,如果有时候想调整信息的内容怎么办?接下来就是把发送的消息内容放到一个json文件中,使用express搭建一个简单的服务,在页面提交表单修改发送内容,或者提供一个页面直接发送消息,无需等待序列。..那是下一篇文章的内容。..