Skip to content

Commit

Permalink
Merge pull request anduinnn#41 from anduinnn/refactor/tg_bot-wechat-m…
Browse files Browse the repository at this point in the history
…ethods

Refactor/tg bot wechat methods
  • Loading branch information
anduinnn authored Jun 5, 2024
2 parents f2f51db + 0c5cb45 commit ca68c51
Show file tree
Hide file tree
Showing 4 changed files with 105 additions and 56 deletions.
67 changes: 22 additions & 45 deletions src/main/java/cloud/ohiyou/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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)
Expand Down Expand Up @@ -121,12 +131,14 @@ private static void publishResults(List<CookieSignResult> 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
}


Expand Down Expand Up @@ -272,39 +284,4 @@ private static String readResponse(Response response) throws IOException {
private static <T> T stringToObject(String result, Class<T> 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();
}
}
}
8 changes: 4 additions & 4 deletions src/main/java/cloud/ohiyou/utils/DingTalkUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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);
Expand All @@ -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;
Expand Down
44 changes: 44 additions & 0 deletions src/main/java/cloud/ohiyou/utils/TelegramUtils.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
42 changes: 35 additions & 7 deletions src/main/java/cloud/ohiyou/utils/WeChatWorkUtils.java
Original file line number Diff line number Diff line change
@@ -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 {

Expand All @@ -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
*/
Expand All @@ -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;

Expand Down Expand Up @@ -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();
}
}
}

0 comments on commit ca68c51

Please sign in to comment.