From bf70cd54c806f9a8c6d720eb15e30873855884f2 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Tue, 5 May 2026 23:38:24 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=86=95=20Add=20new=20send-dingtalk=20scri?= =?UTF-8?q?pt=20and=20update=20metadata?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script-meta-v2.json | 9 +++++ single-scripts/send-dingtalk.ts | 69 +++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 single-scripts/send-dingtalk.ts diff --git a/script-meta-v2.json b/script-meta-v2.json index 02e1273..d8b2438 100644 --- a/script-meta-v2.json +++ b/script-meta-v2.json @@ -303,6 +303,15 @@ "publish_time": 1758211365931, "update_time": 1758211655417 }, + "send-dingtalk.ts": { + "script_name": "send-dingtalk.ts", + "script_length": 1989, + "script_sha256": "3aaf65b397710241027fc2c01bd5e77da8f578b5818368561e1a2a68ec8223ea", + "script_full_url": "https://git.hatter.ink/hatter/ts-scripts/raw/branch/main/single-scripts/send-dingtalk.ts", + "single_script_file": true, + "publish_time": 1777995479460, + "update_time": 1777995479460 + }, "server-control.ts": { "script_name": "server-control.ts", "script_length": 970, diff --git a/single-scripts/send-dingtalk.ts b/single-scripts/send-dingtalk.ts new file mode 100644 index 0000000..57651ed --- /dev/null +++ b/single-scripts/send-dingtalk.ts @@ -0,0 +1,69 @@ +#!/usr/bin/env runts -- --allow-all + +import {parseArgs} from "jsr:@std/cli/parse-args"; +import {exit, log, readFileToString,} from "https://script.hatter.ink/@71/deno-commons-mod.ts"; +import {sendDingTalkTextMessage} from "https://script.hatter.ink/@1/deno-dingtalk-mod.ts"; + +function parseFlags(): any { + const flags = parseArgs(Deno.args, { + boolean: ["help"], + string: ["access-token", "sec-token", "text-message"], + alias: { + h: "help", + }, + }); + const helpMessage = `send-dingtalk.ts - DESCRIPTION + +send-dingtalk.ts --access-token TOKEN --sec-token TOKEN --text-message MESSAGE +`; + if (flags.help) { + console.log(helpMessage); + exit(0); + } + return flags; +} + +interface SendDingTalkConfig { + accessToken: string; + secToken?: string; +} + +async function loadConfig(args: any): Promise { + if (args["access-token"]) { + return { + accessToken: args["access-token"], + secToken: args["sec-token"], + } as SendDingTalkConfig; + } + const sendDingtalkConfigContent = await readFileToString( + "~/.config/send-dingtalk.json", + ); + if (sendDingtalkConfigContent == null) { + return null; + } + return JSON.parse(sendDingtalkConfigContent) as SendDingTalkConfig; +} + +async function main(): Promise { + const flags = parseFlags(); + + const config = await loadConfig(flags); + if (config == null) { + throw new Error("access-token (and/or sec-token) not found"); + } + await sendDingTalkTextMessage({ + content: flags["text-message"] ?? "Empty Message!", + }, { + access_token: config.accessToken, + sec_token: config.secToken, + }); + return; +} + +main().catch((err) => { + log.error(err); + exit(1); +}).then(() => exit(0)); + +// @SCRIPT-SIGNATURE-V1: yk-r1.ES256.20260505T233750+08:00.MEYCIQDQekiqXBMyq0MJhyOI +// 2vG6HJKmijZ1dcLIc7/vxEn3ZgIhAPyF3twsS9la7HsTed6TxvVCQqeRQv71r6rnHo0W//QY