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

举报
穆雄雄 发表于 2022/12/26 22:10:48 2022/12/26
【摘要】 大家好,我是雄雄。 前言前几天,发了一个系列这样的文章,如下所示:java实现每日给女友微信发送早安等微信信息java实现给微信群中定时推送消息如何将每日新闻添加到自己博客中,发送到微信群中基本都是说的一个事儿,那就是如何实现java与微信打通!今天我们主要来介绍这个事儿,应用场景有以下几块:我们都知道,企业微信是有许许多多的开放api供开发者使用的,比如使用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();
        // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
        // 因为按中国礼拜一作为第一天所以这里减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个,智能微秘书结合天行数据,你可以玩出更多花样出来~期待你的成果,欢迎评论区留言~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。