Files
Stardream eace48732d
Build and Push Docker Images / build (push) Successful in 17s
Initial release
2026-06-02 12:02:02 +10:00

51 lines
1.6 KiB
Python

from urllib.parse import urljoin
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup, WebAppInfo
from app.core.config import settings
def _mini_app_url(path: str = "") -> str:
base = settings.mini_app_url.rstrip("/") + "/"
return urljoin(base, path.lstrip("/"))
def main_menu_keyboard() -> InlineKeyboardMarkup:
return InlineKeyboardMarkup(inline_keyboard=[[
InlineKeyboardButton(
text="Open lottery app",
web_app=WebAppInfo(url=_mini_app_url()),
)
]])
def create_lottery_keyboard() -> InlineKeyboardMarkup:
return InlineKeyboardMarkup(inline_keyboard=[[
InlineKeyboardButton(
text="Create lottery",
web_app=WebAppInfo(url=_mini_app_url("/create")),
)
]])
def lottery_detail_keyboard(lottery_id: str, text: str = "🎰 Join lottery") -> InlineKeyboardMarkup:
"""For private chat messages - web_app is allowed here."""
return InlineKeyboardMarkup(inline_keyboard=[[
InlineKeyboardButton(
text=text,
web_app=WebAppInfo(url=_mini_app_url(f"/lottery/{lottery_id}")),
)
]])
def lottery_announce_keyboard(lottery_id: str) -> InlineKeyboardMarkup:
"""For group/channel announcements - web_app is not allowed; use t.me deep link."""
from app.bot.router import bot_username
if bot_username:
url = f"https://t.me/{bot_username}?start=lottery_{lottery_id}"
else:
url = _mini_app_url(f"/lottery/{lottery_id}")
return InlineKeyboardMarkup(inline_keyboard=[[
InlineKeyboardButton(text="🎰 Join lottery", url=url)
]])