feat: batch-генерация слов дня, кнопка "Слово дня" в статистике
- Оптимизирована генерация слов дня: 2 запроса к AI вместо 11 - Добавлена кнопка "Слово дня" в /stats для быстрого доступа - Локализация для ru/en/ja 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -663,4 +663,51 @@ async def cmd_stats(message: Message):
|
||||
else:
|
||||
stats_text += t(lang, 'stats.hint_keep_practice')
|
||||
|
||||
await message.answer(stats_text)
|
||||
# Кнопка "Слово дня"
|
||||
keyboard = InlineKeyboardMarkup(inline_keyboard=[
|
||||
[InlineKeyboardButton(
|
||||
text=t(lang, 'stats.word_of_day_btn'),
|
||||
callback_data="stats_word_of_day"
|
||||
)]
|
||||
])
|
||||
|
||||
await message.answer(stats_text, reply_markup=keyboard)
|
||||
|
||||
|
||||
@router.callback_query(F.data == "stats_word_of_day")
|
||||
async def stats_word_of_day(callback: CallbackQuery):
|
||||
"""Показать слово дня из статистики"""
|
||||
await callback.answer()
|
||||
|
||||
from services.wordofday_service import wordofday_service
|
||||
from bot.handlers.wordofday import format_word_of_day
|
||||
|
||||
async with async_session_maker() as session:
|
||||
user = await UserService.get_user_by_telegram_id(session, callback.from_user.id)
|
||||
|
||||
if not user:
|
||||
return
|
||||
|
||||
lang = get_user_lang(user)
|
||||
learning_lang = user.learning_language or 'en'
|
||||
level = get_user_level_for_language(user)
|
||||
|
||||
wod = await wordofday_service.get_word_of_day(
|
||||
learning_lang=learning_lang,
|
||||
level=level
|
||||
)
|
||||
|
||||
if not wod:
|
||||
await callback.message.answer(t(lang, 'wod.not_available'))
|
||||
return
|
||||
|
||||
text = format_word_of_day(wod, lang)
|
||||
|
||||
keyboard = InlineKeyboardMarkup(inline_keyboard=[
|
||||
[InlineKeyboardButton(
|
||||
text=t(lang, 'wod.add_btn'),
|
||||
callback_data=f"wod_add_{wod.id}"
|
||||
)]
|
||||
])
|
||||
|
||||
await callback.message.answer(text, reply_markup=keyboard)
|
||||
|
||||
Reference in New Issue
Block a user