#!/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