Java實(shí)現(xiàn)給微信群中定時(shí)推送消息
前言
上一篇,我們介紹了如何通過(guò)調(diào)用接口的方式,將每日新聞發(fā)送到自己的博客中。我們會(huì)發(fā)現(xiàn),將新聞以文章的形式發(fā)布,并且相關(guān)內(nèi)容按照markdown的形式進(jìn)行格式調(diào)整,有需要的可以點(diǎn)擊這里查看:如何將每日新聞添加到自己博客中
今天,我們看看如何將每日新聞推送到自己的社群中。
準(zhǔn)備工作
- 你可以沒(méi)有自己的博客,但是你需要跑一個(gè)springboot的項(xiàng)目(java環(huán)境下,別的語(yǔ)言另說(shuō),不過(guò)需要在服務(wù)器上跑)
- 你已經(jīng)申請(qǐng)了天行數(shù)據(jù)的【每日新聞簡(jiǎn)報(bào)】接口
- 你項(xiàng)目中引入了hutool的maven,因?yàn)樾枰盟鼇?lái)請(qǐng)求接口
- 本位是以springboot項(xiàng)目來(lái)介紹的,別的實(shí)現(xiàn)方式也基本上一樣,大家可以簡(jiǎn)單做個(gè)修改。
- 注冊(cè)智能微秘書(shū)的賬號(hào),能夠有權(quán)限調(diào)用openapi接口,不然無(wú)法實(shí)現(xiàn)給群里面發(fā)送消息。
- 如果不想用自己的微信號(hào)來(lái)發(fā)送,則還需要準(zhǔn)備一個(gè)別的微信好。
- 有自己的服務(wù)器。
以上準(zhǔn)備工作是個(gè)基礎(chǔ),如果你是個(gè)幾年的程序員的話,上面基本上沒(méi)啥問(wèn)題。
注冊(cè)智能微秘書(shū)
準(zhǔn)備工作的1 2 3 4我就不做介紹了,2我在上篇文章中介紹過(guò),現(xiàn)在我們介紹一下4,因?yàn)槲覀円虢o微信群或者好友發(fā)消息,離不開(kāi)一個(gè)技術(shù)wechaty,而如果我們自己去研究它,不值得,晦澀難懂(我自己去看過(guò))
所以我們借助這個(gè)跳板去操作,它就是智能微秘書(shū),它將wechaty封裝了下,我們直接調(diào)用它提供的api即可實(shí)現(xiàn),非常簡(jiǎn)單。
首先我們打開(kāi)智能微秘書(shū),地址:這里
然后我們需要拿到這個(gè)key,調(diào)用接口的時(shí)候需要用到,在個(gè)人中心的里面就有
然后接下來(lái)我們寫(xiě)后端代碼,實(shí)現(xiàn)給微信群中發(fā)送消息。
代碼實(shí)現(xiàn)
/** * 將每日新聞推送到微信群中 * @return */ @Override public void sendWechat(JSONObject contentObject) { String url = WEI_MI_SHU_API + "/openapi/v1/chat/room"; WeiZhiMiShuVO weiZhiMiShuVO = new WeiZhiMiShuVO(); weiZhiMiShuVO.setType(1); //拿到發(fā)送的消息列表 JSONArray array = contentObject.getJSONArray("list"); StringBuilder sb = new StringBuilder("今天是:" + contentObject.getString("todayDate") + ",早安??????"); int index = 1; for (Object o : array) { JSONObject item = (JSONObject) o; //標(biāo)題加時(shí)間 sb.append("\n") .append(index) .append(".") .append(item.getString("title")) .append("\n"); ; /* .append("[") .append(item.getString("mtime")) .append("]") .append("\n");*/ index++; } sb.append("\n詳情請(qǐng)點(diǎn)擊:https://88688.team/articles/") .append(contentObject.getString("aid")) .append(" 查看~\n"); sb.append("\n【早安寄語(yǔ)】") .append(goodMorning()); System.out.println("發(fā)送的消息為:" + 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() ; } }
代碼說(shuō)明:
- WEI_MI_SHU_API 是接口地址
- 這個(gè)接口我傳了個(gè)JSONObject對(duì)象過(guò)來(lái),里面存放的是新聞的標(biāo)題列表,時(shí)間,然后在接口中對(duì)該列表進(jìn)行遍歷。
- 【早安寄語(yǔ)】直接調(diào)用天行數(shù)據(jù)api的接口就行,封裝方法一樣。
- apiKey為智能微秘書(shū)的
- roomName是你要發(fā)送的群名稱
- message是發(fā)送內(nèi)容的對(duì)象,我這邊新建了個(gè)實(shí)體
WeiZhiMiShuVO實(shí)體的代碼如下:
package com.shiyi.vo; import lombok.Data; /** * @author: muxiongxiong * @date: 2022年12月17日 21:26 * 公眾號(hào):雄雄的小課堂 * 博客:https://blog.csdn.net/qq_34137397 * 個(gè)人站:https://www.穆雄雄.com * 個(gè)人站:https://www.muxiongxiong.cn * @Description: 發(fā)送群消息的實(shí)體類(微秘書(shū)) */ @Data public class WeiZhiMiShuVO { /** * 消息類型:1 文字 2 圖片url 3 圖片base64 4 url卡片鏈接 */ private Integer type; /** * 消息內(nèi)容,如果type為1必填,內(nèi)容換行使用\n */ private String content; /** * type 為2,3,4必填,圖片地址,或者文件地址,例如png,jpg或者zip,excel都可以,必須是網(wǎng)絡(luò)地址 */ private String url; /** * type 為4必填,卡片鏈接的描述 */ private String description; /** * type 為4必填,卡片鏈接的縮略圖,網(wǎng)絡(luò)圖片地址 */ private String thumbnailUrl; /** * type 為4必填,卡片標(biāo)題內(nèi)容 */ private String title; }
然后我們?cè)诳刂破?code>controller中,寫(xiě)個(gè)接口調(diào)用一下該service
即可,定時(shí)順便也加上。
/** * 獲取每日新聞 * @Scheduled 表示定時(shí),每天早上5點(diǎn)執(zhí)行 * @param * @return */ @GetMapping(value = "/getDaysNews") @Scheduled(cron ="0 20 5 * * ?") // @Scheduled(cron ="0/1 * * * * ?") public ResponseResult getDaysNews() { return articleService.getDaysNews(); }
這樣就實(shí)現(xiàn)了每天早上凌晨5.20給微信群眾推送消息了。
到此這篇關(guān)于Java實(shí)現(xiàn)給微信群中定時(shí)推送消息的文章就介紹到這了,更多相關(guān)Java微信群定時(shí)推送消息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring?@Conditional的使用與擴(kuò)展源碼分析
這篇文章主要介紹了spring?@Conditional的使用與擴(kuò)展,這里需要注意如果Condition返回的是false,那么spirng就不會(huì)對(duì)方法或類進(jìn)行解析,具體源碼分析跟隨小編一起看看吧2022-03-03spring boot 不連接數(shù)據(jù)庫(kù)啟動(dòng)的解決
這篇文章主要介紹了spring boot 不連接數(shù)據(jù)庫(kù)啟動(dòng)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08在idea中使用JaCoCo插件統(tǒng)計(jì)單元測(cè)試覆蓋率的實(shí)現(xiàn)
這篇文章主要介紹了在idea中使用JaCoCo插件統(tǒng)計(jì)單元測(cè)試覆蓋率的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01Springboot實(shí)現(xiàn)XSS漏洞過(guò)濾的示例代碼
這篇文章主要介紹了Springboot實(shí)現(xiàn)XSS漏洞過(guò)濾的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Spring的@Transactional注解使用詳細(xì)解析
這篇文章主要介紹了Spring的@Transactional注解使用詳細(xì)解析,@Transactional 注解相信大家并不陌生,平時(shí)開(kāi)發(fā)中很常用的一個(gè)注解,它能保證方法內(nèi)多個(gè)數(shù)據(jù)庫(kù)操作要么同時(shí)成功、要么同時(shí)失敗,需要的朋友可以參考下2023-11-11SpringBoot集成內(nèi)存數(shù)據(jù)庫(kù)Sqlite的實(shí)踐
sqlite這樣的內(nèi)存數(shù)據(jù)庫(kù),小巧可愛(ài),做小型服務(wù)端演示程序,非常好用,本文主要介紹了SpringBoot集成Sqlite,具有一定的參考價(jià)值,感興趣的可以了解一下2021-09-09Java 中的FileReader和FileWriter源碼分析_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
本文給大家分享一段示例程序,通過(guò)示例代碼可以看出FileReader是基于InputStreamReader實(shí)現(xiàn)的,FileWriter是基于OutputStreamWriter實(shí)現(xiàn)的,具體程序代碼大家通過(guò)本文了解下吧2017-05-05idea之Recompile、Rebuild和Build之間的區(qū)別及說(shuō)明
這篇文章主要介紹了idea之Recompile、Rebuild和Build之間的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08