generated from geekiot/python-template
feature/localization #13
3 changed files with 83 additions and 2 deletions
58
src/bot/handlers/unverified/callbacks/language.py
Normal file
58
src/bot/handlers/unverified/callbacks/language.py
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
from aiogram import F
|
||||
from aiogram.types import CallbackQuery, Message
|
||||
from aiogram.utils.i18n import gettext as _
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from bot.handlers import unverified_registry
|
||||
from bot.utils.keyboards import get_language_choose_markup
|
||||
from bot.utils.types import ChatType
|
||||
from database import TelegramUser
|
||||
|
||||
|
||||
@unverified_registry.register(
|
||||
triggers="choose_language",
|
||||
description="Choose language callback menu",
|
||||
chat_types=ChatType.PRIVATE,
|
||||
is_callback=True,
|
||||
)
|
||||
async def call_choose_language(
|
||||
call: CallbackQuery,
|
||||
) -> None:
|
||||
if not isinstance(call.message, Message):
|
||||
return
|
||||
|
||||
await call.message.edit_text(
|
||||
text=_("unverified choose language menu"),
|
||||
reply_markup=get_language_choose_markup(),
|
||||
)
|
||||
|
||||
|
||||
@unverified_registry.register(
|
||||
filters=F.data.startswith("choose_language_"), # pyrefly: ignore
|
||||
description="Choose language callback menu",
|
||||
chat_types=ChatType.PRIVATE,
|
||||
is_callback=True,
|
||||
)
|
||||
async def call_choosed_language(
|
||||
call: CallbackQuery,
|
||||
telegram_user: TelegramUser,
|
||||
session: AsyncSession,
|
||||
) -> None:
|
||||
if not isinstance(call.message, Message) or call.data is None:
|
||||
return
|
||||
|
||||
code = call.data.split("_")[-1]
|
||||
|
||||
telegram_user.lang = code
|
||||
|
||||
await session.commit()
|
||||
|
||||
await call.message.edit_text(
|
||||
text=_(
|
||||
"unverified choose language successfully template",
|
||||
locale=code,
|
||||
).format(
|
||||
code,
|
||||
),
|
||||
reply_markup=None,
|
||||
)
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
__all__ = [
|
||||
"get_start_verification_markup",
|
||||
"get_language_choose_markup",
|
||||
"get_verification_role_markup",
|
||||
"get_verification_finish_markup",
|
||||
"get_menu_markup",
|
||||
|
|
@ -23,8 +24,30 @@ def get_start_verification_markup() -> InlineKeyboardMarkup:
|
|||
InlineKeyboardButton(
|
||||
text=_("start verification button"),
|
||||
callback_data="verification_start",
|
||||
),
|
||||
InlineKeyboardButton(
|
||||
text=_("choose language button"),
|
||||
callback_data="choose_language",
|
||||
),
|
||||
)
|
||||
builder.adjust(1)
|
||||
return builder.as_markup()
|
||||
|
||||
|
||||
def get_language_choose_markup() -> InlineKeyboardMarkup:
|
||||
builder = InlineKeyboardBuilder()
|
||||
|
||||
builder.add(
|
||||
InlineKeyboardButton(
|
||||
text="en", callback_data="choose_language_en"
|
||||
),
|
||||
InlineKeyboardButton(
|
||||
text="ru", callback_data="choose_language_ru"
|
||||
),
|
||||
)
|
||||
|
||||
builder.adjust(2)
|
||||
|
||||
return builder.as_markup()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ class RouterRegistry:
|
|||
if isinstance(chat_types, ChatType):
|
||||
chat_types = [chat_types]
|
||||
|
||||
if isinstance(filters, (Filter, State)):
|
||||
if isinstance(filters, (Filter, State, MagicFilter)):
|
||||
filters = [filters]
|
||||
elif filters is None:
|
||||
filters = list()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue