java实现如何定时给微信群中发送消息

大家好,我是雄雄。

在这里插入图片描述

前言

前几天,发了一个系列这样的文章,如下所示:

  1. java实现每日给女友微信发送早安等微信信息
  2. java实现给微信群中定时推送消息
  3. 如何将每日新闻添加到自己博客中,发送到微信群中

基本都是说的一个事儿,那就是如何实现java与微信打通!

今天我们主要来介绍这个事儿,应用场景有以下几块:

  • 我们都知道,企业微信是有许许多多的开放api供开发者使用的,比如使用java实现一个定时给微信中发送消息的功能,配置个群机器人就可以实现,那不借助企业微信可以实现吗?
  • 不借助别的技术,使用纯java可以实现给群中发送消息吗?

当然,是可以的!!今天,我们就来展开的介绍一下,如何直接使用java实现上面所说的技术。

效果图

每天晚上20.30提醒大家发日报
在这里插入图片描述

每天早上5.20发送时事新闻
在这里插入图片描述
来自群成员的好评
在这里插入图片描述

实现思路

  1. 定时任务为了方便快捷,我们直接使用springboot自带的来实现
  2. 如何实现给微信群中发送消息?我们可以使用wechaty技术,也可以使用别的,因为wechaty要想使用它,是有一定的门槛的。技术能力的要求是其一,其二就是需要整一个ipad协议的token,才能使用。有人可能会说:那我整个token不就行了吗?

这倒是,你整一个就行,但是收费的,你愿意吗?一月几百你愿意吗?相信很多人一月拿出来几百肯定是不太愿意的。
3. 既然第二条有点棘手,那么还有没有别的方法,有!那就用封装过的wechaty来实现----智能微秘书(不是打广告哈),因为我刚开始也是看的wechaty,整好久,没有整出来,虽然giteegithub中确实也有demo,但是拉下来之后要想和自己的业务无缝衔接,还是有点麻烦的。

实现代码

  1. 由于我们是基于封装完成wechaty智能微秘书来实现的,所以需要先注册个账号,地址为:点我
  2. 花20块钱开个月度会员,我是觉得20块钱可能就是一顿饭钱的事儿,何不拿来自己整点东西玩玩(只有会员才有openapi)的权限。
    在这里插入图片描述
  3. 剩下的就简单了,然后我们只需要按照接口文档调用就行啦。
    由于调用接口的时候,需要传递一个message对象,所以我这边就封装成了个实体类:
    在这里插入图片描述
    实体类如下WeiZhiMiShuVO
package com.shiyi.vo;import lombok.Data;/*** @author: muxiongxiong* @date: 2022年12月17日 21:26* 公众号:雄雄的小课堂* 博客:https://blog.csdn.net/qq_34137397* 个人站:https://www.穆雄雄.com* 个人站:https://www.muxiongxiong.cn* @Description: 发送群消息的实体类(微秘书)*/
@Data
public class WeiZhiMiShuVO {/*** 消息类型:1 文字 2 图片url 3 图片base64 4 url卡片链接*/private Integer type;/*** 消息内容,如果type为1必填,内容换行使用\n*/private String content;/*** type 为2,3,4必填,图片地址,或者文件地址,例如png,jpg或者zip,excel都可以,必须是网络地址*/private String url;/*** type 为4必填,卡片链接的描述*/private String description;/*** 	type 为4必填,卡片链接的缩略图,网络图片地址*/private String thumbnailUrl;/*** type 为4必填,卡片标题内容*/private String title;}
  1. 调用给群里发送消息的接口,封装成自己想要发送的内容:
public void sendWechat(JSONObject contentObject) {String url = WEI_MI_SHU_API + "/openapi/v1/chat/room";WeiZhiMiShuVO weiZhiMiShuVO = new WeiZhiMiShuVO();weiZhiMiShuVO.setType(1);//拿到发送的消息列表JSONArray array = contentObject.getJSONArray("list");String todayDate = contentObject.getString("todayDate");StringBuilder sb = new StringBuilder("今天是:" + todayDate);//根据阳历计算农历Calendar today = Calendar.getInstance();// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......// 因为按中国礼拜一作为第一天所以这里减1String week = "";try {week = DateUtils.getDaysByWeekChina(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));today.setTime(DateUtils.chineseDateFormat.parse(todayDate));DateUtils lunar = new DateUtils(today);String nongli = lunar.toString();nongli = nongli.substring(nongli.indexOf("年")+1);sb.append(",星期").append(week).append(",农历").append(nongli).append(",早安🌞🌞🌞").append("\n");} catch (ParseException e) {e.printStackTrace();}int index = 1;for (Object o : array) {JSONObject item = (JSONObject) o;//标题加时间sb.append("\n").append(index).append(".").append(item.getString("title")).append("\n");;index++;}sb.append("\n详情请点击:https://88688.team/articles/").append(contentObject.getString("aid")).append(" 查看~\n");sb.append("\n【早安寄语】").append(goodMorning());System.out.println("发送的消息为:" + sb.toString());weiZhiMiShuVO.setContent(sb.toString());for (String str : SEND_GROUP) {JSONObject object = new JSONObject();object.put("apiKey", WEI_MI_SHU_KEY);object.put("roomName", str);object.put("message", weiZhiMiShuVO);HttpUtil.createPost(url).body(JSON.toJSONString(object)).execute().body();}}

上面的代码,实现的是获取时事新闻,包括每日一句的早安寄语,其中新闻接口是天行数据的,早安寄语也是~

天行数据接口,每个人可以免费10个,智能微秘书结合天行数据,你可以玩出更多花样出来期待你的成果,欢迎评论区留言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一张图理清ASP.NET Core启动流程

1. 引言 对于ASP.NET Core应用程序来说,我们要记住非常重要的一点是:其本质上是一个独立的控制台应用,它并不是必需在IIS内部托管且并不需要IIS来启动运行(而这正是ASP.NET Core跨平台的基石)。ASP.NET Core应用程序拥…

ssl提高组周六备考赛【2018.10.20】

前言 er…竟然卡读入输出还不给快读qwq 成绩 有些dalao被老师拉去USACO了,所以没有 HJW应该去jzoj做题了 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC1112017myself2017myself2017myself2402402407070701001001007070702222017zyc2017zyc2017zyc1901…

DevOps之发布系统V1.0

一、发布系统架构 (1)普通发布 (2)微服务发布 二、子系统与功能模块 (1)代码仓库 github、gitlab、svn (2)构建机 jenkins、maven构建机、本地构建包 (3&#xff0…

Nodejs安装及使用

现阶段nodejs我用的多的是它里面的npm js的各种库都可以用npm安装,十分方便,再也不用去网上找了 当然,主要还是github上面的很多项目都要用npm“解封” 那下面说下它的安装吧 进入官网 https://nodejs.org/en/ 它会自动检测你的电脑&#xf…

在ASP.NET Core上实施每个租户策略的数据库

不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: http://gunnarpeipman.com/2017/08/database-per-tenant/ 让我们继续使用ASP.NET Core web应用…

nssl1216-码灵鼠【数学】

正题 题目大意 一个序列 a01a_01a0​1 akaiaj(i,j∈[0..k−1])a_ka_ia_j(i,j\in[0..k-1])ak​ai​aj​(i,j∈[0..k−1]) i和j随机选取 求ana_nan​的期望值 解题思路 先打个表不难发现aii1a_ii1ai​i1 之后我们用数学归纳法开始证明 a0011a_0011a0​011 然后用等差序列之和计…

JS中typeof的用法

转载自 JS中typeof的用法 js是一门弱语言,它在声明变量时无需确定变量的类型,js在运行时会自动判断。那么如何判断一个变量的类型呢,js提供了typeof运算符,用来检测一个变量的类型。 1. typeof的语法 typeof是一个运算符&#x…

php动态网站

记得从五六月份就说要建一个可以注册登录的网站了,结果自己两个多月都没能建成,由于学习动态网站实在需要太多知识了,可以说我这几个月的时间都是花在网页上的,从刚开始的htmlcss 到后面的js,js花了太多太多时间&#…

从头编写 asp.net core 2.0 web api 基础框架 (2)

上一篇是: 从头编写 asp.net core 2.0 web api 基础框架 (1) Github源码地址是: https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratch 本文讲的是里面的Step 2. 上一次, 我们使用asp.net core 2.0 建立了一个Empty project, 然后做了…

nssl1217-So many prefix?【KMP】

正题 题目大意 求长度为偶数的前缀在字符串SSS中出现的次数和。 解题思路 我们先不考虑长度为偶数的话,答案很好求。先求出KMP的next数组,然后numinumnexti1num_inum_{next_i}1numi​numnexti​​1。 之后num的和就是答案。 注:num数组表示前i个字符的…

js中toString()和String()区别详解

转载自 js中toString()和String()区别详解 我们知道String()与 .toString()都是可以转换为字符串类型,但是String()与 .toString()的还是有区别的 1、.toString()可以将所有的的数据都转换为字符串,但是要排除null 和 undefined 例如将false转为字符…

java实现上传网络图片到七牛云存储

大家好,我是雄雄。 前言 最近阳了,第二条杠红的发紫,真难受啊,但是吧,博客上有个bug,不解决感觉比阳了还难受。 话还是要从博客的图片显示不出来这里说起,当时做的时候,在发文章这…

【php】php对mysql的连接操作【mysql】

思路: 1、数据库做两个表单,一个是user用来记录用户的信息,方便登录与注册。另一个表单是chat,用来记录聊天内容。 2、用到的技术是ajax,网页及时交互数据,可以做到无刷新聊天。 遍历数据库表单 数据库连…

nssl1218-TRAVEL【SPFA】

正题 题目大意 n个图,有m条双向道路,每条道路有一个l和r。 求一条路径,使得路上最小的r和路上最大的l的差最大。 解题思路 我们考虑枚举l,然后用SPFA计算最大的r。然后这样会超时。 之后我们发现其实答案的l一定是某一条边的l&…

gRPC官方快速上手学习笔记(c#版)

上手前准备工作 支持操作系统:windows、OS X、Linux。实例采用.net、.net core sdk。 The .NET Core SDK command line tools. The .NET framework 4.5 (for OS X and Linux, the open source .NET Framework implementation, “Mono”, at version 4, is suitable…

JS中的加号+运算符详解

转载自 JS中的加号运算符详解 加号运算符 在 JavaScript 中,加法的规则其实很简单,只有两种情况: 把数字和数字相加把字符串和字符串相加 所有其他类型的值都会被自动转换成这两种类型的值。 为了能够弄明白这种隐式转换是如何进行的,我们…

ajax做聊天交互

本想学了几天ajax就可以弄一个类似于qq的网页聊天界面,发现自己想的还是太简单了。 有两个问题无法解决: 1、即使用ajax还是无法保证数据的及时交互,没有办法无时无刻刷新页面。现学的ajax还是依赖于点击事件,才能请求后台数据。 …

ssl提高组周三备考赛【2018.10.24】

前言 快乐题警告! 成绩 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC1112017myself2017myself2017myself2102102101001001001001001001010102222017zyc2017zyc2017zyc1581581581001001001818184040403332017xxy2017xxy2017xxy157157157100100100272727…

spring cloud+dotnet core搭建微服务架构:Api网关(三)

前言 国庆假期,一直没有时间更新。 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud。文章下面有纯洁大神的spring cloud系列。 上一章最后说了,因为服务是不对外暴露的,所以在外网要访问服务必须通过API网关来完成&…

java实现人脸识别源码【含测试效果图】——前期准备工作及访问提示

注意: 看完之后如有不懂,请看:关于人脸和指纹识别共同交流方案,也可以关注微信公众号:雄雄的小课堂,回复:人脸识别群获取群号,群内有直接可以运行的源码可供下载,人脸识…