Download scripts/send-preview-stickers.js from kavion/quote-api: direct link, hf CLI and curl.
- Browser
- Download file 3.37 kB
-
https://huggingface.co/spaces/kavion/quote-api/resolve/main/scripts/send-preview-stickers.js
- Command line
-
hf download hf://spaces/kavion/quote-api/scripts/send-preview-stickers.js
-
curl -L -o send-preview-stickers.js https://huggingface.co/spaces/kavion/quote-api/resolve/main/scripts/send-preview-stickers.js
3.37 kB
| // Надсилає прев'ю-стікери редизайну в Telegram. | |
| // Run: node scripts/send-preview-stickers.js [chat_id] | |
| require('dotenv').config() | |
| const { Telegram } = require('telegraf') | |
| const generate = require('../methods/generate') | |
| const CHAT_ID = Number(process.argv[2] || 66478514) | |
| const BOT_TOKEN = process.env.BOT_TOKEN | |
| const BG = '//#252e44' // gradient pair (lighten/darken) → glass bubble | |
| async function main () { | |
| if (!BOT_TOKEN) throw new Error('BOT_TOKEN missing in .env') | |
| const telegram = new Telegram(BOT_TOKEN) | |
| const cases = [ | |
| ['текст + реплай', [{ | |
| chatId: 101, | |
| avatar: true, | |
| from: { id: 101, name: 'Олена Ковальчук' }, | |
| replyMessage: { name: 'Андрій', text: 'давай завтра о 10:00?', chatId: 102 }, | |
| text: 'Домовились, скину нагадування 🔥' | |
| }]], | |
| ['voice', [{ | |
| chatId: 103, | |
| avatar: true, | |
| from: { id: 103, name: 'Макс Голос' }, | |
| voice: { waveform: Array.from({ length: 60 }, (_, i) => 4 + ((i * 13) % 28), 0), duration: 83 } | |
| }]], | |
| ['документ', [{ | |
| chatId: 104, | |
| avatar: true, | |
| from: { id: 104, name: 'Бухгалтерія' }, | |
| document: { file_name: 'квартальний_звіт_2026.pdf', file_size: 2.4 * 1024 * 1024 }, | |
| text: 'фінальна версія' | |
| }]], | |
| ['музика', [{ | |
| chatId: 105, | |
| avatar: true, | |
| from: { id: 105, name: 'Меломан' }, | |
| audio: { title: 'Водограй', performer: 'Володимир Івасюк', duration: 215 } | |
| }]], | |
| ['відео', [{ | |
| chatId: 106, | |
| avatar: true, | |
| from: { id: 106, name: 'Відеограф' }, | |
| media: { url: 'https://picsum.photos/seed/quoteapi/640/360' }, | |
| mediaType: 'video', | |
| mediaDuration: 42, | |
| text: 'подивіться до кінця 🔥' | |
| }]], | |
| ['діалог (групування)', [ | |
| { | |
| chatId: 107, | |
| avatar: true, | |
| from: { id: 107, name: 'assasinfil' }, | |
| text: 'Хто знає як зробити NFC клон?' | |
| }, | |
| { | |
| chatId: 107, | |
| avatar: true, | |
| from: { id: 107, name: 'assasinfil' }, | |
| text: 'Треба Flipper Zero для цього' | |
| }, | |
| { | |
| chatId: 108, | |
| avatar: true, | |
| from: { id: 108, name: 'nowiks' }, | |
| replyMessage: { name: 'assasinfil', text: 'Хто знає як зробити NFC клон?', chatId: 107 }, | |
| text: 'Ну получить можна… не понял..' | |
| } | |
| ]] | |
| ] | |
| await telegram.sendMessage(CHAT_ID, '🎨 Прев\'ю редизайну цитат — глянь стікери нижче') | |
| for (const [label, messages] of cases) { | |
| try { | |
| const result = await generate({ | |
| botToken: BOT_TOKEN, | |
| messages, | |
| type: 'quote', | |
| format: 'webp', | |
| ext: 'webp', | |
| scale: 2, | |
| backgroundColor: BG | |
| }) | |
| if (result.error) throw new Error(result.error) | |
| await telegram.sendSticker(CHAT_ID, { source: Buffer.from(result.image) }) | |
| console.log(`✓ ${label} (${result.width}x${result.height})`) | |
| } catch (err) { | |
| console.error(`✗ ${label}: ${err.message}`) | |
| } | |
| } | |
| } | |
| main().catch((err) => { | |
| console.error('FAIL:', err.message) | |
| process.exit(1) | |
| }) | |