首页IT科技java给微信群发消息(还在手动发早安吗?教你用java实现每日给女友微信发送早安)

java给微信群发消息(还在手动发早安吗?教你用java实现每日给女友微信发送早安)

时间2025-06-20 10:26:01分类IT科技浏览4729
导读:摘要:教你如何用java实现每日给女友微信发送早安等微信信息。...

摘要:教你如何用java实现每日给女友微信发送早安等微信信息                。

本文分享自华为云社区《java实现每日给女友微信发送早安等微信信息》            ,作者:穆雄雄                   。

前言

据说这个功能最近在抖音上很火                      ,我没有抖音       ,没有看到      。

但是我在网上看了         ,相关案例确实很多                     ,但是大家都是借助于了微信服务号           ,在我看来      ,效果很不佳            。

其实我原来的初衷是这样的                    ,每天定时给群里推送新闻               ,这个原因在之前的文章中也提到过   ,这边就不在细说了                   ,然后实现了给群中推送之后                   ,就想着,能不能每天给指定人发送消息               ,网上搜了搜                      ,果然有   ,各种实现方式五花八门            ,但是都没看上                      ,于是就自己找了个       ,自己写                    。

网上案例

网上最多的可能就是利用微信服务号给推送信息         ,如图所示:

缺点如下:

需要点进去订阅号才能看到                     ,没哟起到吸引的作用 申请的测试服务号           ,也不知道多久过期      ,说停就给你停掉了 定制化的需求有的达不到

介于此                    ,我就自己找了一个路子去做               ,昨晚刚写完   ,测了测                   ,效果还是比较不错的         。如下图所示:

(有点肉麻~)

实现方式

下面我们来看看是如何实现的        。

准备工作

注册智能微秘书账号                   ,花20块钱开个会员(20块钱一点都不多) 注册天行数据的账号,申请三个接口(早安寄语            、每日新闻                      、土味情话)               ,也可以自己加入别的有意义的内容                      ,直接申请接口就行                     。 准备一个微信号   ,可以用你现在自己的            ,也可以在申请一个            。 准备一个服务器 准备一个java项目                      ,放服务器上跑就可以

假使你的准备工作除4       、5之外       ,都已经做完了         ,下面我们来看看如何从代码层面来实现    。

实现原理

调用天行数据的api                     ,获取自己想要的数据,封装起来 调用只能微秘书的接口           ,实现给微信好友发送消息 给控制器controller类中添加定时任务      ,实现定时发送

关键代码如下所示:

1.调用天行数据接口                    ,获取早安寄语:

2.调用天行数据接口               ,获取土味情话:

/** * 获取每日土味情话 * */ public static String getLoveWords(){ String path = "saylove/index"; //调用每日简报的接口 String body = HttpUtil .createGet(Constants.TIAN_XING_API + path + "?key=" + TIAN_KEY) .execute() .body(); JSONObject jsonObjectResult = JSON.parseObject(body); Integer code = jsonObjectResult.getInteger("code"); if(code!=200){ log.error("请求每日新闻的接口出错   ,出错信息:"+body); return "一切都是最好的安排~"; } JSONObject resultObject = jsonObjectResult.getJSONObject("result"); log.info("请求每日新闻的接口成功:"+resultObject); return resultObject.getString("content"); }

3.调用天行数据接口                   ,获取天气预报:

/** * 获取天气预报 * */ public static JSONObject getWeather(){ String path = "tianqi/index"; //调用每日简报的接口 String body = HttpUtil .createGet(Constants.TIAN_XING_API + path + "?key=" + TIAN_KEY+"&type=1&city=370100") .execute() .body(); JSONObject jsonObjectResult = JSON.parseObject(body); Integer code = jsonObjectResult.getInteger("code"); if(code!=200){ log.error("请求每日新闻的接口出错                   ,出错信息:"+body); return null; } return jsonObjectResult.getJSONObject("result"); /* * { "code": 200, "msg": "success", "result": { "date": "2022-12-19", "week": "星期一", "province": "上海", "area": "上海", "areaid": "101020100", "weather": "晴", "weatherimg": "qing.png", "weathercode": "qing", "real": "3℃", "lowest": "2℃", "highest": "9℃", "wind": "北风", "windspeed": "0", "windsc": "0级", "sunrise": "06:47", "sunset": "16:54", "moonrise": "", "moondown": "", "pcpn": "0", "uv_index": "0", "aqi": "54", "quality": "良", "vis": "18", "humidity": "48", "alarmlist": [ ], "tips": "晴天紫外线等级较高,外出注意补水防晒                      。天气凉               ,适宜着一到两件羊毛衫         、大衣                     、毛套装           、皮夹克等春秋着装;年老体弱者宜着风衣加羊毛衫等厚型春秋着装               。空气质量较好                      ,可以参与各类户外活动。疫情防控不松懈   ,出门请佩戴口罩                   。" } } * */ }

日期处理关键代码

1.获取今天是周几

/** * 获取汉字的今天周几 * @param dateTime * @return * @throws ParseException */ public static String getDaysByWeekChina(String dateTime) throws ParseException { Calendar cal = Calendar.getInstance(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = dateFormat.parse(dateTime); cal.setTime(date); int day = cal.get(Calendar.DAY_OF_WEEK); day = day - 1; //周的汉字 String week = ""; switch (day) { case 0: week = "日"; break; case 1: week = "一"; break; case 2: week = "二"; break; case 3: week = "三"; break; case 4: week = "四"; break; case 5: week = "五"; break; case 6: week = "六"; break; } return week; }

2.获取纪念日的天数(两个日期之间的差):

/** * 得到二个日期间的间隔天数 * * @param date1 * @param date2 * @return */ public static int getDayByTwoDay(String date1, String date2) { SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); Long day = 0L; try { java.util.Date date = myFormatter.parse(date1); java.util.Date mydate = myFormatter.parse(date2); day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); } catch (Exception e) { return 0; } return day.intValue(); }

实现给指定微信好友推送消息

/** * 每天将指定信息推送到微信个人 */ @Override public void sendWechatToUser() { String url = WEI_MI_SHU_API + "/openapi/v1/chat/contact"; WeiZhiMiShuVO weiZhiMiShuVO = new WeiZhiMiShuVO(); //发送文字信息 weiZhiMiShuVO.setType(1); try { //拿到发送的消息列表 SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日"); SimpleDateFormat format_h = new SimpleDateFormat("yyyy-MM-dd"); //今天的日期 String toDate = format_h.format(new Date()); //相恋的日期 String lian = "2022-03-28"; //两个日期相差的天数 int cha = DateUtils.getDayByTwoDay(toDate, lian); String todayDate = format.format(new Date()); //根据阳历计算农历 Calendar today = Calendar.getInstance(); String week = DateUtils.getDaysByWeekChina(toDate); today.setTime(DateUtils.chineseDateFormat.parse(todayDate)); DateUtils lunar = new DateUtils(today); String nongli = lunar.toString(); nongli = nongli.substring(nongli.indexOf("年") + 1); StringBuilder sb = new StringBuilder(); sb.append("亲爱的老婆~早\n\n") .append("充满希望的一天又开始了            ,今天也要一直开心                      ,不能生我气气~") .append("\n\n今天是:") .append(todayDate) .append("       ,星期") .append(week) .append("         ,农历") .append(nongli) .append("\n") .append("是我们相爱的第:") .append(cha) .append("天") .append("\n\n") ; JSONObject tianqiObject = TianXingApiUtil.getWeather(); sb.append("目前济南天气:") .append(tianqiObject.getString("weather")) .append("\n") .append("当前气温:") .append(tianqiObject.getString("real")) .append("\n") .append("今天最高温度:") .append(tianqiObject.getString("highest")) .append("\n") .append("最低温度:") .append(tianqiObject.getString("lowest")) .append("\n") .append("风向:") .append(tianqiObject.getString("wind")) .append("\n") .append("空气质量:") .append(tianqiObject.getString("quality")) .append("\n") .append("空气质量指数:") .append(tianqiObject.getString("aqi")) .append("\n") .append("小提示:") .append(tianqiObject.getString("tips")); //土味情话 sb.append("\n\n") .append("爱你一日言:") .append(TianXingApiUtil.getLoveWords()) .append("\n\n【早安寄语】") .append(goodMorning()); weiZhiMiShuVO.setContent(sb.toString()); for (String str : SEND_USER) { JSONObject object = new JSONObject(); object.put("apiKey", WEI_MI_SHU_KEY); //好友昵称 object.put("name", str); //好友备注 object.put("alias", str); object.put("message", weiZhiMiShuVO); String body = HttpUtil.createPost(url) .body(JSON.toJSONString(object)) .execute() .body(); System.out.println("传递的参数是:" + JSON.toJSONString(object)); System.out.println("发送成功了吗?" + body); } } catch (ParseException e) { e.printStackTrace(); } }

说明:

WeiZhiMiShuVO类可以参考文章:java实现给微信群中定时推送消息 代码中涉及到的常量                     ,都放在了常量类中           ,SEND_USER是要发给微信好友的好友昵称      ,不是备注哈                  。 智能微秘书接口地址:接口地址

然后我们在控制器controller中调用该方法即可实现:

/** * 发送消息给指定的人 */ @GetMapping(value = "/sendWechatToUser") @Scheduled(cron ="0 0 8 * * ?") public void sendWechatToUser(){ articleService.sendWechatToUser(); }

cron ="0 0 8 * * ?是一个corn表达式                    ,表示每天早上8点给指定的微信好友推送消息   。

点击关注               ,第一时间了解华为云新鲜技术~

声明:本站所有文章   ,如无特殊说明或标注                   ,均为本站原创发布                。任何个人或组织                   ,在未征得本站同意时,禁止复制      、盗用                    、采集               、发布本站内容到任何网站   、书籍等各类媒体平台                   。如若本站内容侵犯了原著者的合法权益               ,可联系我们进行处理      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
如何挖掘?技巧与思路(从目的明确到数据分析,教你成为挖掘达人) 文章生成器官网(探索AI文章智能生成器,助力创作高质量的中文软文)