Files
LightningLotto/telegram_bot/src/services/qr.ts
Michilis 918d3bc31e feat: Add configurable draw cycles, improve UX
Backend:
- Add configurable draw cycle settings (minutes/hourly/daily/weekly/custom)
- Add CYCLE_TYPE, CYCLE_INTERVAL_*, CYCLE_DAILY_TIME, CYCLE_WEEKLY_* env vars
- Add SALES_CLOSE_BEFORE_DRAW_MINUTES and CYCLES_TO_GENERATE_AHEAD
- Fix SQLite parameter issue in scheduler

Frontend:
- Add 'Save This Link' section with copy button on ticket status page
- Improve draw animation to show immediately when draw starts
- Show 'Waiting for next round...' instead of 'Drawing Now!' after draw
- Hide Buy Tickets button when waiting for next round
- Skip draw animation if no tickets were sold
- Keep winner screen open longer (15s) for next cycle to load
- Auto-refresh to next lottery cycle after draw

Telegram Bot:
- Various improvements and fixes
2025-11-28 03:24:17 +00:00

29 lines
602 B
TypeScript

import QRCode from 'qrcode';
import { logger } from './logger';
/**
* Generate a QR code as a buffer from a Lightning invoice
*/
export async function generateQRCode(data: string): Promise<Buffer> {
try {
const buffer = await QRCode.toBuffer(data.toUpperCase(), {
errorCorrectionLevel: 'M',
type: 'png',
margin: 2,
width: 300,
color: {
dark: '#000000',
light: '#FFFFFF',
},
});
return buffer;
} catch (error) {
logger.error('Failed to generate QR code', { error });
throw error;
}
}
export default { generateQRCode };