diff --git a/src/main/java/cloud/ohiyou/Main.java b/src/main/java/cloud/ohiyou/Main.java index a72aa2d..492e4ca 100644 --- a/src/main/java/cloud/ohiyou/Main.java +++ b/src/main/java/cloud/ohiyou/Main.java @@ -6,6 +6,7 @@ */ import cloud.ohiyou.utils.DingTalkUtils; +import cloud.ohiyou.utils.TelegramUtils; import cloud.ohiyou.utils.WeChatWorkUtils; import cloud.ohiyou.vo.CookieSignResult; import cloud.ohiyou.vo.SignResultVO; @@ -15,7 +16,6 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -import java.net.URLEncoder; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -24,13 +24,23 @@ import java.util.regex.Pattern; public class Main { - private static final String COOKIE = System.getenv("COOKIE"); + /** ↓↓↓↓↓↓↓↓↓↓ 测试 ↓↓↓↓↓↓↓↓↓↓ */ // private static final String COOKIE = cloud.ohiyou.test.TestEnum.COOKIE.getValue(); +// private static final String SERVER_CHAN_KEY = cloud.ohiyou.test.TestEnum.SERVER_CHAN_KEY.getValue(); // Service酱推送的key +// private static final String WXWORK_WEBHOOK = cloud.ohiyou.test.TestEnum.WXWORK_WEBHOOK.getValue(); // 企业微信机器人 key 的值 +// private static final String DINGTALK_WEBHOOK = cloud.ohiyou.test.TestEnum.DINGTALK_WEBHOOK.getValue(); // 钉钉机器人 access_token 的值 +// private static final String TG_CHAT_ID = cloud.ohiyou.test.TestEnum.TG_CHAT_ID.getValue(); // Telegram Chat ID +// private static final String TG_BOT_TOKEN = cloud.ohiyou.test.TestEnum.TG_BOT_TOKEN.getValue(); // Telegram Bot Token + /** ↑↑↑↑↑↑↑↑↑↑ 测试 ↑↑↑↑↑↑↑↑↑↑ */ + + /** ↓↓↓↓↓↓↓↓↓↓ 正式 ↓↓↓↓↓↓↓↓↓↓ */ + private static final String COOKIE = System.getenv("COOKIE"); private static final String DINGTALK_WEBHOOK = System.getenv("DINGTALK_WEBHOOK"); // 钉钉机器人 access_token 的值 private static final String WXWORK_WEBHOOK = System.getenv("WXWORK_WEBHOOK"); // 企业微信机器人 key 的值 - private static final String SERVER_CHAN_KEY = System.getenv("SERVER_CHAN"); - private static final String TG_CHAT_ID = System.getenv("TG_CHAT_ID"); - private static final String TG_BOT_TOKEN = System.getenv("TG_BOT_TOKEN"); + private static final String SERVER_CHAN_KEY = System.getenv("SERVER_CHAN"); // Service酱推送的key + private static final String TG_CHAT_ID = System.getenv("TG_CHAT_ID"); // Telegram Chat ID + private static final String TG_BOT_TOKEN = System.getenv("TG_BOT_TOKEN"); // Telegram Bot Token + /** ↑↑↑↑↑↑↑↑↑↑ 正式 ↑↑↑↑↑↑↑↑↑↑ */ private static final OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) @@ -121,12 +131,14 @@ private static void publishResults(List results) { } } - String title = allSuccess ? "签到成功" : "签到失败"; // 根据所有签到结果决定标题 + String title = allSuccess ? "HiFiNi签到成功" : "HiFiNi签到失败"; // 根据所有签到结果决定标题 + + System.out.println("\nHiFiNi签到消息: \n" + title + ":\n" + messageBuilder.toString()); // 推送 - publishWechat(SERVER_CHAN_KEY, title,messageBuilder.toString()); - publishTelegramBot(TG_CHAT_ID, TG_BOT_TOKEN, title + "\n" + messageBuilder.toString()); - DingTalkUtils.pushBotMessage(DINGTALK_WEBHOOK, title, messageBuilder.toString(), "", "markdown"); - WeChatWorkUtils.pushBotMessage(WXWORK_WEBHOOK, title, messageBuilder.toString(), "markdown"); + WeChatWorkUtils.pushWechatServiceChan(SERVER_CHAN_KEY, title,messageBuilder.toString()); // 推送微信公众号Service酱 + WeChatWorkUtils.pushBotMessage(WXWORK_WEBHOOK, title, messageBuilder.toString(), "markdown"); // 推送企业微信机器人 + DingTalkUtils.pushBotMessage(DINGTALK_WEBHOOK, title, messageBuilder.toString(), "", "markdown"); // 推送钉钉机器人 + TelegramUtils.publishTelegramBot(TG_CHAT_ID, TG_BOT_TOKEN, "HiFiNi签到消息: \n" + title + ":\n" + messageBuilder.toString()); // push telegram bot } @@ -272,39 +284,4 @@ private static String readResponse(Response response) throws IOException { private static T stringToObject(String result, Class clazz) { return JSON.parseObject(result, clazz); } - - private static void publishWechat(String serverChanKey, String title, String body) { - if (serverChanKey == null || serverChanKey.isEmpty()) { - log("SERVER_CHAN 环境变量未设置"); - return; - } - - try { - String url = "https://sctapi.ftqq.com/" + serverChanKey + ".send?title=" + - URLEncoder.encode(title, "UTF-8") + "&desp=" + URLEncoder.encode(body, "UTF-8"); - Request request = new Request.Builder() - .url(url) - .build(); - client.newCall(request).execute(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - private static void publishTelegramBot(String chatId, String botToken, String message) { - if (chatId == null || chatId.isEmpty() || botToken == null || botToken.isEmpty()) { - log("TG_CHAT_ID 或 TG_BOT_TOKEN 环境变量未设置"); - return; - } - - try { - String url = "https://api.telegram.org/bot" + botToken + "/sendMessage?chat_id=" + chatId + "&text=" + URLEncoder.encode(message, "UTF-8"); - Request request = new Request.Builder() - .url(url) - .build(); - client.newCall(request).execute(); - } catch (Exception e) { - e.printStackTrace(); - } - } } diff --git a/src/main/java/cloud/ohiyou/utils/DingTalkUtils.java b/src/main/java/cloud/ohiyou/utils/DingTalkUtils.java index 17a7cdc..4abad96 100644 --- a/src/main/java/cloud/ohiyou/utils/DingTalkUtils.java +++ b/src/main/java/cloud/ohiyou/utils/DingTalkUtils.java @@ -17,14 +17,14 @@ /** * 钉钉工具箱 * @Author 银垚@mtouyao - * @Date&Time 2024/3/7 10:25 + * @Date&Time 2024/3/7 */ public class DingTalkUtils { /** * 钉钉机器人 * @Author 银垚@mtouyao - * @Date&Time 2024/3/7 10:25 + * @Date&Time 2024/3/7 * @param customRobotToken 你的机器人应用的 access_token 的值/your custom robot token * @param messageText 签到信息 * @param userIDs (可选)用户的 userId 信息[仅限钉钉内部群使用]/you need @ group user's userId @@ -57,7 +57,7 @@ public static void pushBotMessage(String customRobotToken, String messageTitle, case "text": //定义文本内容 OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text(); - text.setContent("HiFiNi签到信息:"+messageTitle+messageText); + text.setContent("HiFiNiBot签到信息:"+messageTitle+messageText); //设置消息类型 req.setMsgtype("text"); req.setText(text); @@ -67,7 +67,7 @@ public static void pushBotMessage(String customRobotToken, String messageTitle, // 定义markdown内容 OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown(); markdown.setTitle("HiFiNiBot消息通知"); - markdown.setText("# HiFiNi签到消息通知 \n ## "+messageTitle+" \n"+messageText); + markdown.setText("# HiFiNiBot签到消息通知 \n ## "+messageTitle+" \n"+messageText); req.setMsgtype("markdown"); req.setMarkdown(markdown); break; diff --git a/src/main/java/cloud/ohiyou/utils/TelegramUtils.java b/src/main/java/cloud/ohiyou/utils/TelegramUtils.java new file mode 100644 index 0000000..d40664f --- /dev/null +++ b/src/main/java/cloud/ohiyou/utils/TelegramUtils.java @@ -0,0 +1,44 @@ +package cloud.ohiyou.utils; + +import okhttp3.OkHttpClient; +import okhttp3.Request; + +import java.net.URLEncoder; +import java.util.concurrent.TimeUnit; + +public class TelegramUtils { + + private static final OkHttpClient client = new OkHttpClient.Builder() + .connectTimeout(30, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .build(); + + + /** + * 微信公众号Service酱推送的key + * @Author LisonFan + * @Date&Time 2024/4/28 + * @Migrate 银垚@mtouyao + * @MigrateDate&Time 2024/6/5 + * @param telegramChatId Telegram Chat ID + * @param telegramBotToken Telegram Bot Token + * @param messageText 签到信息 + */ + public static void publishTelegramBot(String telegramChatId, String telegramBotToken, String messageText) { + if (telegramChatId == null || telegramChatId.isEmpty() || telegramBotToken == null || telegramBotToken.isEmpty()) { + System.out.println("TG_CHAT_ID 或 TG_BOT_TOKEN 环境变量未设置"); + return; + } + + try { + String url = "https://api.telegram.org/bot" + telegramBotToken + "/sendMessage?chat_id=" + telegramChatId + "&text=" + URLEncoder.encode(messageText, "UTF-8"); + Request request = new Request.Builder() + .url(url) + .build(); + client.newCall(request).execute(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/cloud/ohiyou/utils/WeChatWorkUtils.java b/src/main/java/cloud/ohiyou/utils/WeChatWorkUtils.java index 76d72c5..c0e8f47 100644 --- a/src/main/java/cloud/ohiyou/utils/WeChatWorkUtils.java +++ b/src/main/java/cloud/ohiyou/utils/WeChatWorkUtils.java @@ -1,18 +1,16 @@ package cloud.ohiyou.utils; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.dingtalk.api.request.OapiRobotSendRequest; import okhttp3.*; import java.io.IOException; +import java.net.URLEncoder; import java.util.concurrent.TimeUnit; /** * 企业微信工具箱 * @Author 银垚@mtouyao - * @Date&Time 2024/3/7 16:40 + * @Date&Time 2024/3/7 */ public class WeChatWorkUtils { @@ -24,8 +22,9 @@ public class WeChatWorkUtils { /** * 企业微信工具箱 * @Author 银垚@mtouyao - * @Date&Time 2024/3/7 16:40 + * @Date&Time 2024/3/7 * @param WXWorkRobotKey 微信的机器人应用的 key 的值 + * @param messageTitle 签到信息标题 * @param messageText 签到信息 * @param msgType (必选其一)text/markdown */ @@ -42,12 +41,12 @@ public static void pushBotMessage(String WXWorkRobotKey, String messageTitle, St // 企业微信发送类型详解官网: https://developer.work.weixin.qq.com/document/path/91770 // 发送text消息 case "text": - jsonBody = "{\"msgtype\": \"text\",\"text\": {\"content\":\"HiFiNi签到消息通知:"+messageTitle+messageText+"\"}}"; + jsonBody = "{\"msgtype\": \"text\",\"text\": {\"content\":\"HiFiNiBot签到消息通知:"+messageTitle+messageText+"\"}}"; //定义文本内容 break; //发送markdown消息 case "markdown": - jsonBody = "{\"msgtype\": \"markdown\",\"markdown\": {\"content\":\"# HiFiNi签到消息通知 \n ## "+messageTitle+" \n"+messageText+"\"}}"; + jsonBody = "{\"msgtype\": \"markdown\",\"markdown\": {\"content\":\"# HiFiNiBot签到消息通知 \n ## "+messageTitle+" \n"+messageText+"\"}}"; // 定义markdown内容 break; @@ -91,4 +90,33 @@ public static void pushBotMessage(String WXWorkRobotKey, String messageTitle, St e.printStackTrace(); } } + + + /** + * 微信公众号Service酱推送的key + * @Author anduinnn + * @Date&Time + * @Migrate 银垚@mtouyao + * @MigrateDate&Time 2024/6/5 + * @param serverChanKey Service酱推送的key + * @param messageTitle 签到信息标题 + * @param messageBody 签到信息 + */ + public static void pushWechatServiceChan(String serverChanKey, String messageTitle, String messageBody) { + if (serverChanKey == null || serverChanKey.isEmpty()) { + System.out.println("SERVER_CHAN 环境变量未设置"); + return; + } + + try { + String url = "https://sctapi.ftqq.com/" + serverChanKey + ".send?title=" + + URLEncoder.encode(messageTitle, "UTF-8") + "&desp=" + URLEncoder.encode(messageBody, "UTF-8"); + Request request = new Request.Builder() + .url(url) + .build(); + client.newCall(request).execute(); + } catch (Exception e) { + e.printStackTrace(); + } + } }