๐Ÿ“„ demo.js

#!/usr/bin/env node

/**
 * QQๆ–‡ไปถๅ‘้€Skill - ๅฎž้™…ไฝฟ็”จ็คบไพ‹
 * ๆผ”็คบๅฆ‚ไฝ•่ฐƒ็”จskillๅ‘้€ๆ–‡ไปถ
 */

console.log('๐Ÿ“ค QQ Botๆ–‡ไปถๅ‘้€Skill - ไฝฟ็”จๆผ”็คบ\n');

// ็คบไพ‹1: ๅฑ•็คบๅฆ‚ไฝ•ๅ‘้€ๆœฌๅœฐๅ›พ็‰‡ๅˆฐ็”จๆˆท
console.log('็คบไพ‹1: ๅ‘้€ๆœฌๅœฐๅ›พ็‰‡ๅˆฐ็ง่Š');
console.log('โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€');
console.log('ไปฃ็ :');
console.log(`
import { sendQQFile } from '/root/.openclaw/workspace/skills/qqbot-file-sender/index.js';

// ๆ–นๆณ•1: ไฝฟ็”จ้€š็”จๅ‡ฝๆ•ฐ
await sendQQFile({
  targetId: '33558EFB7CF362DA4A894FBE2E93DFDE',  // ็”จๆˆทOpenID
  targetType: 'c2c',                            // c2c=็ง่Š, group=็พค่Š
  fileType: 'image',                            // image, video, voice
  filePath: '/path/to/your/image.jpg',          // ๆœฌๅœฐๆ–‡ไปถ่ทฏๅพ„
  content: '่ฟ™ๆ˜ฏๅ‘้€็ป™ๆ‚จ็š„ๅ›พ็‰‡ ๐Ÿ“ธ'              // ้™„ๅŠ ๆ–‡ๅญ—๏ผˆๅฏ้€‰๏ผ‰
});

// ๆ–นๆณ•2: ไฝฟ็”จไพฟๆทๅ‡ฝๆ•ฐ
import { sendQQImageToUser } from '/root/.openclaw/workspace/skills/qqbot-file-sender/index.js';

await sendQQImageToUser(
  '33558EFB7CF362DA4A894FBE2E93DFDE',          // ็”จๆˆทOpenID
  '/path/to/your/image.jpg',                   // ๆœฌๅœฐๅ›พ็‰‡่ทฏๅพ„
  '่ฟ™ๆ˜ฏๅ‘้€็ป™ๆ‚จ็š„ๅ›พ็‰‡ ๐Ÿ“ธ'                      // ่ฏดๆ˜Žๆ–‡ๅญ—๏ผˆๅฏ้€‰๏ผ‰
);
`);

console.log('\nโœ… Skillๅทฒๆญฃ็กฎๅˆ›ๅปบๅนถๅฏผๅ‡บ่ฟ™ไบ›ๅ‡ฝๆ•ฐ');
console.log('   - sendQQFile()              ้€š็”จๆ–‡ไปถๅ‘้€');
console.log('   - sendQQImageToUser()       ๅ‘้€ๅ›พ็‰‡ๅˆฐ็”จๆˆท');
console.log('   - sendQQImageToGroup()      ๅ‘้€ๅ›พ็‰‡ๅˆฐ็พค่Š\n');

// ็คบไพ‹2: ๆฃ€ๆŸฅ้…็ฝฎ
console.log('็คบไพ‹2: ๆฃ€ๆŸฅๅฝ“ๅ‰้…็ฝฎ');
console.log('โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€');

import fs from 'fs';
import path from 'path';
import os from 'os';

try {
  const configPath = path.join(os.homedir(), '.openclaw', 'openclaw.json');
  
  if (fs.existsSync(configPath)) {
    const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
    const qqbotConfig = config.channels?.qqbot;
    
    if (qqbotConfig?.appId && qqbotConfig?.clientSecret) {
      console.log(`โœ… QQ Botๅทฒ้…็ฝฎ`);
      console.log(`   AppID: ${qqbotConfig.appId}`);
      console.log(`   ็Šถๆ€: ๅทฒๅฏ็”จ\n`);
    } else {
      console.log('โš ๏ธ  QQ Bot้…็ฝฎไธๅฎŒๆ•ด');
      console.log('   ้œ€่ฆๆ‰ง่กŒ:');
      console.log('   openclaw channels add --channel qqbot --token "YOUR_APP_ID:YOUR_CLIENT_SECRET"\n');
    }
  } else {
    console.log('โš ๏ธ  ้…็ฝฎๆ–‡ไปถไธๅญ˜ๅœจ');
    console.log('   ้œ€่ฆๅ…ˆ้…็ฝฎOpenClaw\n');
  }
} catch (error) {
  console.log(`โŒ ่ฏปๅ–้…็ฝฎๅคฑ่ดฅ: ${error.message}\n`);
}

console.log('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n');

// ็คบไพ‹3: ๅฟซ้€Ÿๅผ€ๅง‹ๆŒ‡ๅ—
console.log('๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹');
console.log('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n');

console.log('ๆญฅ้ชค1: ๅ‡†ๅค‡ไธ€ๅผ ๆต‹่ฏ•ๅ›พ็‰‡');
console.log('   $ wget https://picsum.photos/seed/test/800/600.jpg -O /tmp/test.jpg\n');

console.log('ๆญฅ้ชค2: ๅœจOpenClawไธญไฝฟ็”จskill');
console.log('   ็›ดๆŽฅๅœจๅฏน่ฏไธญๅ‘Š่ฏ‰AI:');
console.log('   "ๅ‘้€ๅ›พ็‰‡ /tmp/test.jpg ็ป™ๆˆ‘"\n');

console.log('ๆˆ–่€…้€š่ฟ‡ไปฃ็ ่ฐƒ็”จ:');
console.log(`
// ๅœจOpenClaw agentไธญ:
const { sendQQImageToUser } = await import(
  '/root/.openclaw/workspace/skills/qqbot-file-sender/index.js'
);

await sendQQImageToUser(
  '33558EFB7CF362DA4A894FBE2E93DFDE',
  '/tmp/test.jpg',
  'ๆต‹่ฏ•ๅ‘้€ๅ›พ็‰‡ ๐ŸŽ‰'
);
`);

console.log('\nโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n');

// ็คบไพ‹4: ๆŸฅ็œ‹ๆ–‡ๆกฃ
console.log('๐Ÿ“š ๆŸฅ็œ‹ๅฎŒๆ•ดๆ–‡ๆกฃ');
console.log('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n');

console.log('   cat /root/.openclaw/workspace/skills/qqbot-file-sender/README.md');
console.log('   cat /root/.openclaw/workspace/skills/qqbot-file-sender/SKILL.md\n');

console.log('ๆŸฅ็œ‹็คบไพ‹:');
console.log('   cat /root/.openclaw/workspace/skills/qqbot-file-sender/examples.ts\n');

console.log('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n');
console.log('โœ… Skillๅฎ‰่ฃ…ๅฎŒๆˆ๏ผ');
console.log('   ไฝ็ฝฎ: /root/.openclaw/workspace/skills/qqbot-file-sender/');
console.log('   ็Šถๆ€: ๅทฒๅฐฑ็ปช๏ผŒๅฏไปฅๅผ€ๅง‹ไฝฟ็”จ');
console.log('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n');