From fcd180b7a42c60aca6d7edde1434a0cfc95e711e Mon Sep 17 00:00:00 2001 From: Michilis Date: Tue, 9 Dec 2025 01:04:27 +0000 Subject: [PATCH] Add 'Upcoming Jackpot' button to Telegram bot menu Shows current prize pool, ticket price, draw time, and time remaining --- telegram_bot/src/index.ts | 27 +++++++++++++++++++++++++++ telegram_bot/src/utils/keyboards.ts | 1 + 2 files changed, 28 insertions(+) diff --git a/telegram_bot/src/index.ts b/telegram_bot/src/index.ts index 2fdbef8..f517eb5 100644 --- a/telegram_bot/src/index.ts +++ b/telegram_bot/src/index.ts @@ -238,6 +238,33 @@ bot.on('message', async (msg) => { // Handle menu button presses switch (text) { + case '๐ŸŽฐ Upcoming Jackpot': + try { + const jackpot = await apiClient.getNextJackpot(); + + if (!jackpot) { + await bot.sendMessage(msg.chat.id, messages.buy.noActiveJackpot, { + parse_mode: 'Markdown', + }); + return; + } + + const drawTime = new Date(jackpot.cycle.scheduled_at); + const jackpotMessage = `๐ŸŽฐ *Upcoming Jackpot* + +๐Ÿ’ฐ *Prize Pool:* ${formatSats(jackpot.cycle.pot_total_sats)} sats +๐ŸŽŸ *Ticket Price:* ${formatSats(jackpot.lottery.ticket_price_sats)} sats +โฐ *Draw at:* ${formatDate(drawTime)} +โณ *Time left:* ${formatTimeUntil(drawTime)} + +Use /buyticket to get your tickets! ๐Ÿ€`; + + await bot.sendMessage(msg.chat.id, jackpotMessage, { parse_mode: 'Markdown' }); + } catch (error) { + logger.error('Error showing jackpot', { error }); + await bot.sendMessage(msg.chat.id, messages.errors.systemUnavailable); + } + return; case '๐ŸŽŸ Buy Tickets': await handleBuyCommand(bot, msg); return; diff --git a/telegram_bot/src/utils/keyboards.ts b/telegram_bot/src/utils/keyboards.ts index c6e5923..22ededa 100644 --- a/telegram_bot/src/utils/keyboards.ts +++ b/telegram_bot/src/utils/keyboards.ts @@ -10,6 +10,7 @@ import { NotificationPreferences } from '../types'; export function getMainMenuKeyboard(): ReplyKeyboardMarkup { return { keyboard: [ + [{ text: '๐ŸŽฐ Upcoming Jackpot' }], [{ text: '๐ŸŽŸ Buy Tickets' }, { text: '๐Ÿงพ My Tickets' }], [{ text: '๐Ÿ† My Wins' }, { text: 'โšก Lightning Address' }], [{ text: 'โš™๏ธ Settings' }, { text: 'โ„น๏ธ Help' }],