feat: Telegram bot — full functionality with inline keyboards, file upload, auth
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
||||
|
||||
|
||||
def template_choice_keyboard(templates: list[dict]) -> InlineKeyboardMarkup:
|
||||
buttons = []
|
||||
for tpl in templates:
|
||||
buttons.append([InlineKeyboardButton(
|
||||
text=tpl["name"],
|
||||
callback_data=f"template:{tpl['id']}",
|
||||
)])
|
||||
return InlineKeyboardMarkup(inline_keyboard=buttons)
|
||||
|
||||
|
||||
def protocol_actions_keyboard(protocol_id: str, app_url: str) -> InlineKeyboardMarkup:
|
||||
return InlineKeyboardMarkup(inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="📄 DOCX", callback_data=f"export:{protocol_id}:docx"),
|
||||
InlineKeyboardButton(text="📕 PDF", callback_data=f"export:{protocol_id}:pdf"),
|
||||
InlineKeyboardButton(text="📝 MD", callback_data=f"export:{protocol_id}:md"),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(text="🔄 Перегенерировать", callback_data=f"regen:{protocol_id}"),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(text="🌐 Открыть в вебе", url=f"{app_url}/protocols/{protocol_id}"),
|
||||
],
|
||||
])
|
||||
|
||||
|
||||
def recording_list_keyboard(recordings: list[dict]) -> InlineKeyboardMarkup:
|
||||
buttons = []
|
||||
for rec in recordings[:10]:
|
||||
status_emoji = {"uploaded": "⏳", "processing": "⚙️", "done": "✅", "error": "❌"}
|
||||
emoji = status_emoji.get(rec["status"], "")
|
||||
buttons.append([InlineKeyboardButton(
|
||||
text=f"{emoji} {rec['title'][:40]}",
|
||||
callback_data=f"rec:{rec['id']}",
|
||||
)])
|
||||
return InlineKeyboardMarkup(inline_keyboard=buttons)
|
||||
Reference in New Issue
Block a user