quote-api / scripts /send-preview-stickers.js
Quote API Deploy
feat: deploy quote-api to Hugging Face Spaces
2413e0a unverified
Raw
History Blame Contribute Delete
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)
})