java实现如何定时给微信群中发送消息
Posted 穆雄雄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实现如何定时给微信群中发送消息相关的知识,希望对你有一定的参考价值。
大家好,我是雄雄。
前言
前几天,发了一个系列这样的文章,如下所示:
基本都是说的一个事儿,那就是如何实现java
与微信打通!
今天我们主要来介绍这个事儿,应用场景有以下几块:
- 我们都知道,企业微信是有许许多多的开放
api
供开发者使用的,比如使用java
实现一个定时给微信中发送消息的功能,配置个群机器人就可以实现,那不借助企业微信可以实现吗? - 不借助别的技术,使用纯
java
可以实现给群中发送消息吗?
当然,是可以的!!今天,我们就来展开的介绍一下,如何直接使用java
实现上面所说的技术。
效果图
每天晚上20.30提醒大家发日报
每天早上5.20发送时事新闻
来自群成员的好评
实现思路
- 定时任务为了方便快捷,我们直接使用
springboot
自带的来实现 - 如何实现给微信群中发送消息?我们可以使用
wechaty
技术,也可以使用别的,因为wechaty
要想使用它,是有一定的门槛的。技术能力的要求是其一,其二就是需要整一个ipad
协议的token
,才能使用。有人可能会说:那我整个token
不就行了吗?
这倒是,你整一个就行,但是收费的,你愿意吗?一月几百你愿意吗?相信很多人一月拿出来几百肯定是不太愿意的。
3. 既然第二条有点棘手,那么还有没有别的方法,有!那就用封装过的wechaty
来实现----智能微秘书(不是打广告哈),因为我刚开始也是看的wechaty
,整好久,没有整出来,虽然gitee
和github
中确实也有demo
,但是拉下来之后要想和自己的业务无缝衔接,还是有点麻烦的。
实现代码
- 由于我们是基于封装完成
wechaty
的智能微秘书
来实现的,所以需要先注册个账号,地址为:点我 - 花20块钱开个月度会员,我是觉得20块钱可能就是一顿饭钱的事儿,何不拿来自己整点东西玩玩(只有会员才有
openapi
)的权限。
- 剩下的就简单了,然后我们只需要按照接口文档调用就行啦。
由于调用接口的时候,需要传递一个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;
- 调用给群里发送消息的接口,封装成自己想要发送的内容:
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();
// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
// 因为按中国礼拜一作为第一天所以这里减1
String 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个,智能微秘书结合天行数据,你可以玩出更多花样出来期待你的成果,欢迎评论区留言
以上是关于java实现如何定时给微信群中发送消息的主要内容,如果未能解决你的问题,请参考以下文章