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微信群定時推送消息內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Java實現將每日新聞添加到自己博客中
- Java實現每日給女友微信發送早安信息
- Java實用工具之StringJoiner詳解
- 如何通過ServletInputStream讀取http請求傳入的數據
- SpringBoot @Cacheable自定義KeyGenerator方式