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__ = [
|
__all__ = [
|
||||||
"get_start_verification_markup",
|
"get_start_verification_markup",
|
||||||
|
"get_language_choose_markup",
|
||||||
"get_verification_role_markup",
|
"get_verification_role_markup",
|
||||||
"get_verification_finish_markup",
|
"get_verification_finish_markup",
|
||||||
"get_menu_markup",
|
"get_menu_markup",
|
||||||
|
|
@ -23,8 +24,30 @@ def get_start_verification_markup() -> InlineKeyboardMarkup:
|
||||||
InlineKeyboardButton(
|
InlineKeyboardButton(
|
||||||
text=_("start verification button"),
|
text=_("start verification button"),
|
||||||
callback_data="verification_start",
|
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()
|
return builder.as_markup()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@ class RouterRegistry:
|
||||||
if isinstance(chat_types, ChatType):
|
if isinstance(chat_types, ChatType):
|
||||||
chat_types = [chat_types]
|
chat_types = [chat_types]
|
||||||
|
|
||||||
if isinstance(filters, (Filter, State)):
|
if isinstance(filters, (Filter, State, MagicFilter)):
|
||||||
filters = [filters]
|
filters = [filters]
|
||||||
elif filters is None:
|
elif filters is None:
|
||||||
filters = list()
|
filters = list()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue