Java实现给微信群中定时推送消息

 更新时间:2022年12月30日 15:03:41   作者:穆雄雄  
这篇文章主要为大家详细介绍了Java如何实现给微信群中定时推送消息的功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以了解一下

前言

上一篇,我们介绍了如何通过调用接口的方式,将每日新闻发送到自己的博客中。我们会发现,将新闻以文章的形式发布,并且相关内容按照markdown的形式进行格式调整,有需要的可以点击这里查看:如何将每日新闻添加到自己博客中

今天,我们看看如何将每日新闻推送到自己的社群中。

准备工作

  • 你可以没有自己的博客,但是你需要跑一个springboot的项目(java环境下,别的语言另说,不过需要在服务器上跑)
  • 你已经申请了天行数据的【每日新闻简报】接口
  • 你项目中引入了hutool的maven,因为需要用它来请求接口
  • 本位是以springboot项目来介绍的,别的实现方式也基本上一样,大家可以简单做个修改。
  • 注册智能微秘书的账号,能够有权限调用openapi接口,不然无法实现给群里面发送消息。
  • 如果不想用自己的微信号来发送,则还需要准备一个别的微信好。
  • 有自己的服务器。

以上准备工作是个基础,如果你是个几年的程序员的话,上面基本上没啥问题。

注册智能微秘书

准备工作的1 2 3 4我就不做介绍了,2我在上篇文章中介绍过,现在我们介绍一下4,因为我们要想给微信群或者好友发消息,离不开一个技术wechaty,而如果我们自己去研究它,不值得,晦涩难懂(我自己去看过)

所以我们借助这个跳板去操作,它就是智能微秘书,它将wechaty封装了下,我们直接调用它提供的api即可实现,非常简单。

首先我们打开智能微秘书,地址:这里

然后我们需要拿到这个key,调用接口的时候需要用到,在个人中心的里面就有

然后接下来我们写后端代码,实现给微信群中发送消息。

代码实现

 /**
     * 将每日新闻推送到微信群中
     * @return
     */
    @Override
    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");
        StringBuilder sb = new StringBuilder("今天是:" + contentObject.getString("todayDate") + ",早安🌞🌞🌞");
        int index = 1;
        for (Object o : array) {
            JSONObject item = (JSONObject) o;
            //标题加时间
            sb.append("\n")
                    .append(index)
                    .append(".")
                    .append(item.getString("title"))
                    .append("\n");
            ;
                   /* .append("[")
                    .append(item.getString("mtime"))
                    .append("]")
                    .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()
            ;
        }

    }

代码说明:

  • WEI_MI_SHU_API 是接口地址
  • 这个接口我传了个JSONObject对象过来,里面存放的是新闻的标题列表,时间,然后在接口中对该列表进行遍历。
  • 【早安寄语】直接调用天行数据api的接口就行,封装方法一样。
  • apiKey为智能微秘书的
  • roomName是你要发送的群名称
  • 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;

}

然后我们在控制器controller中,写个接口调用一下该service即可,定时顺便也加上。

 /**
     * 获取每日新闻
     * @Scheduled 表示定时,每天早上5点执行
     * @param
     * @return
     */
    @GetMapping(value = "/getDaysNews")
    @Scheduled(cron ="0 20 5 * * ?")
//    @Scheduled(cron ="0/1 * * * * ?")
    public ResponseResult getDaysNews() {
      
        return articleService.getDaysNews();
    }

这样就实现了每天早上凌晨5.20给微信群众推送消息了。

到此这篇关于Java实现给微信群中定时推送消息的文章就介绍到这了,更多相关Java微信群定时推送消息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java集合之Disruptor操作示例

    Java集合之Disruptor操作示例

    这篇文章主要为大家介绍了Java集合之Disruptor操作示例介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 冒泡排序的原理及java代码实现

    冒泡排序的原理及java代码实现

    冒泡排序法:关键字较小的记录好比气泡逐趟上浮,关键字较大的记录好比石块下沉,每趟有一块最大的石块沉底。算法本质:(最大值是关键点,肯定放到最后了,如此循环)每次都从第一位向后滚动比较,使最大值沉底,最小值上升一次,最后一位向前推进
    2016-02-02
  • BeanUtils.copyProperties在拷贝属性时忽略空值的操作

    BeanUtils.copyProperties在拷贝属性时忽略空值的操作

    这篇文章主要介绍了BeanUtils.copyProperties在拷贝属性时忽略空值的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java读取properties文件之中文乱码问题及解决

    Java读取properties文件之中文乱码问题及解决

    这篇文章主要介绍了Java读取properties文件之中文乱码问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Java利用位运算实现加减乘除的方法详解

    Java利用位运算实现加减乘除的方法详解

    我们经常使用的加减乘除,我们所看到的只是表面的效果,那么加减乘除在底层究竟是怎么实现的?今天就让我们一探究竟
    2022-08-08
  • Java编写计算器的常见方法实例总结

    Java编写计算器的常见方法实例总结

    这篇文章主要介绍了Java编写计算器的常见方法,结合实例形式总结分析了Java实现计算器功能的常用方法,需要的朋友可以参考下
    2016-04-04
  • 踩坑之spring事务,非事务方法与事务方法执行相互调用方式

    踩坑之spring事务,非事务方法与事务方法执行相互调用方式

    这篇文章主要介绍了踩坑之spring事务,非事务方法与事务方法执行相互调用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 使用Backoff策略提高HttpClient连接管理的效率

    使用Backoff策略提高HttpClient连接管理的效率

    这篇文章主要为大家介绍了Backoff策略提高HttpClient连接管理的效率使用解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Java实现获取cpu、内存、硬盘、网络等信息的方法示例

    Java实现获取cpu、内存、硬盘、网络等信息的方法示例

    这篇文章主要介绍了Java实现获取cpu、内存、硬盘、网络等信息的方法,涉及java使用第三方jar包针对本机硬件的cpu、内存、硬盘、网络信息等的读取相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • java String到底有多长?String超出长度该如何解决

    java String到底有多长?String超出长度该如何解决

    在Java中,由于字符串常量池的存在,String常量长度限制取决于String常量在常量池中的存储大小,下面这篇文章主要给大家介绍了关于java String到底有多长?String超出长度该如何解决的相关资料,需要的朋友可以参考下
    2023-01-01

最新评论