技能备份 - 2026-04-15 (40个技能)

This commit is contained in:
root
2026-04-15 18:53:15 +08:00
parent f62f14814f
commit c65fce24e4
791 changed files with 190773 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
const { program } = require('commander');
// Safe Sender for Feishu Cards
// Automatically handles temp file creation to prevent shell escaping issues.
program
.requiredOption('-t, --target <id>', 'Target User/Chat ID')
.requiredOption('-x, --text <content>', 'Markdown content (will be saved to temp file)')
.option('--title <text>', 'Card Title')
.option('--color <color>', 'Header Color', 'blue');
program.parse(process.argv);
const options = program.opts();
const tempDir = path.resolve(__dirname, '../../temp');
if (!fs.existsSync(tempDir)) fs.mkdirSync(tempDir, { recursive: true });
const tempFile = path.join(tempDir, `msg_${Date.now()}_${Math.random().toString(36).substring(7)}.md`);
try {
// 1. Write content to temp file safely (Node.js writeFileSync avoids shell parsing of content)
fs.writeFileSync(tempFile, options.text, 'utf8');
console.log(`[SafeSend] Written content to ${tempFile}`);
// 2. Construct command for the real sender
// Note: We use the absolute path to send.js
const senderScript = path.resolve(__dirname, 'send.js');
// Build arguments array for spawn/exec
// We construct the command string carefully.
// Since we are invoking via execSync, we still need to quote arguments,
// BUT the dangerous content is now inside a file, so we only quote the filename.
let cmd = `node "${senderScript}" --target "${options.target}" --text-file "${tempFile}" --color "${options.color}"`;
if (options.title) cmd += ` --title "${options.title}"`;
console.log(`[SafeSend] Executing: ${cmd}`);
execSync(cmd, { stdio: 'inherit' });
} catch (e) {
console.error(`[SafeSend] Error: ${e.message}`);
process.exit(1);
} finally {
// 3. Cleanup
try {
if (fs.existsSync(tempFile)) fs.unlinkSync(tempFile);
console.log(`[SafeSend] Cleaned up ${tempFile}`);
} catch (e) {}
}