chore: optimization code

This commit is contained in:
Danil 2025-05-17 12:34:10 +03:00
parent f92e24816d
commit ae695d6f48

View file

@ -1,6 +1,6 @@
from typing import Optional, Tuple, List from typing import Optional, Tuple, List
from aiogram import Router, types from aiogram import Router, types
from aiogram.filters import Command, Text from aiogram.filters import Command
from aiogram.types import ( from aiogram.types import (
InlineKeyboardMarkup, InlineKeyboardMarkup,
InlineKeyboardButton, InlineKeyboardButton,
@ -170,7 +170,7 @@ async def settings_handler(message: types.Message):
) )
@router.callback_query(Text("setting_lang")) @router.callback_query(lambda c: c.data == "setting_lang")
async def show_language_menu(callback: CallbackQuery): async def show_language_menu(callback: CallbackQuery):
locale = await get_user_locale(callback.from_user.id) locale = await get_user_locale(callback.from_user.id)
@ -187,7 +187,7 @@ async def show_language_menu(callback: CallbackQuery):
) )
@router.callback_query(Text(startswith="lang_")) @router.callback_query(lambda c: c.data and c.data.startswith("lang_"))
async def language_selected(callback: CallbackQuery): async def language_selected(callback: CallbackQuery):
lang = callback.data.split("_")[1] lang = callback.data.split("_")[1]
await db.update( await db.update(
@ -212,7 +212,8 @@ async def language_selected(callback: CallbackQuery):
locale.get("language_set").format(lang=lang.upper()) locale.get("language_set").format(lang=lang.upper())
) )
@router.callback_query(Text("back_to_settings"))
@router.callback_query(lambda c: c.data == "back_to_settings")
async def back_to_settings(callback: CallbackQuery): async def back_to_settings(callback: CallbackQuery):
locale = await get_user_locale(callback.from_user.id) locale = await get_user_locale(callback.from_user.id)
@ -235,7 +236,8 @@ async def back_to_settings(callback: CallbackQuery):
callback, locale.get("settings_title"), settings_keyboard callback, locale.get("settings_title"), settings_keyboard
) )
@router.callback_query(Text("setting_chart"))
@router.callback_query(lambda c: c.data == "setting_chart")
async def show_chart_settings(callback: CallbackQuery): async def show_chart_settings(callback: CallbackQuery):
data = await db.fetch( data = await db.fetch(
'SELECT chart, chart_period, lang FROM users WHERE user_id = $1', 'SELECT chart, chart_period, lang FROM users WHERE user_id = $1',
@ -247,7 +249,9 @@ async def show_chart_settings(callback: CallbackQuery):
chart_status = bool(data.get("chart", 1)) chart_status = bool(data.get("chart", 1))
period = data.get("chart_period") or "week" period = data.get("chart_period") or "week"
status_text = locale.get("enabled") if chart_status else locale.get("disabled") status_text = locale.get("enabled") \
if chart_status \
else locale.get("disabled")
period_text = locale.get(period, period) period_text = locale.get(period, period)
text = ( text = (
@ -259,11 +263,12 @@ async def show_chart_settings(callback: CallbackQuery):
await safe_edit_message_text(callback, text, keyboard) await safe_edit_message_text(callback, text, keyboard)
@router.callback_query(Text("chart_toggle"))
@router.callback_query(lambda c: c.data == "chart_toggle")
async def toggle_chart(callback: CallbackQuery): async def toggle_chart(callback: CallbackQuery):
data = await db.fetch( data = await db.fetch(
'SELECT chart, lang FROM users WHERE user_id = $1', 'SELECT chart, lang FROM users WHERE user_id = $1',
callback.from_user.id, callback.from_user.id
) )
lang = data.get("lang", "en") lang = data.get("lang", "en")
locale = i18n.get_locale(lang) locale = i18n.get_locale(lang)
@ -273,8 +278,7 @@ async def toggle_chart(callback: CallbackQuery):
await db.update( await db.update(
'UPDATE users SET chart = $1 WHERE user_id = $2', 'UPDATE users SET chart = $1 WHERE user_id = $2',
new_status, new_status, callback.from_user.id
callback.from_user.id,
) )
await callback.answer( await callback.answer(
@ -287,16 +291,16 @@ async def toggle_chart(callback: CallbackQuery):
await show_chart_settings(callback) await show_chart_settings(callback)
@router.callback_query(Text("chart_period")) @router.callback_query(lambda c: c.data == "chart_period")
async def change_chart_period(callback: CallbackQuery): async def change_chart_period(callback: CallbackQuery):
data = await db.fetch( data = await db.fetch(
'SELECT chart_period, lang FROM users WHERE user_id = $1', 'SELECT chart_period, lang FROM users WHERE user_id = $1',
callback.from_user.id, callback.from_user.id
) )
lang = data.get("lang", "en") lang = data.get("lang", "en")
locale = i18n.get_locale(lang) locale = i18n.get_locale(lang)
current_period = data.get("chart_period") current_period = data.get("chart_period") or "week"
keyboard = build_options_keyboard( keyboard = build_options_keyboard(
options=PERIOD_OPTIONS, options=PERIOD_OPTIONS,
@ -312,13 +316,13 @@ async def change_chart_period(callback: CallbackQuery):
keyboard keyboard
) )
@router.callback_query(Text(startswith="period_"))
@router.callback_query(lambda c: c.data and c.data.startswith("period_"))
async def set_chart_period(callback: CallbackQuery): async def set_chart_period(callback: CallbackQuery):
period = callback.data.split("_")[1] period = callback.data.split("_")[1]
await db.update( await db.update(
'UPDATE users SET chart_period = $1 WHERE user_id = $2', 'UPDATE users SET chart_period = $1 WHERE user_id = $2',
period, period, callback.from_user.id
callback.from_user.id,
) )
locale = await get_user_locale(callback.from_user.id) locale = await get_user_locale(callback.from_user.id)