Skip to content

Commit 40b27e4

Browse files
committed
feat(aiogram): decorate
1 parent 9eed400 commit 40b27e4

File tree

8 files changed

+59
-31
lines changed

8 files changed

+59
-31
lines changed

src/ttt/presentation/adapters/player_views.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from sqlalchemy.ext.asyncio import AsyncSession
77

88
from ttt.application.player.ports.player_views import PlayerViews
9-
from ttt.infrastructure.sqlalchemy.tables import PlayerTableModel
9+
from ttt.infrastructure.sqlalchemy.tables import TablePlayer
1010
from ttt.presentation.aiogram.messages.command import need_to_start_message
1111
from ttt.presentation.aiogram.messages.player import player_info_message
1212

@@ -20,12 +20,12 @@ async def view_of_player_with_id(
2020
self, player_id: int, /,
2121
) -> SendMessage:
2222
stmt = select(
23-
PlayerTableModel.number_of_wins,
24-
PlayerTableModel.number_of_draws,
25-
PlayerTableModel.number_of_defeats,
26-
PlayerTableModel.game_location_game_id.is_not(None).label("is_in_game"),
23+
TablePlayer.number_of_wins,
24+
TablePlayer.number_of_draws,
25+
TablePlayer.number_of_defeats,
26+
TablePlayer.game_location_game_id.is_not(None).label("is_in_game"),
2727
).where(
28-
PlayerTableModel.id == player_id,
28+
TablePlayer.id == player_id,
2929
).limit(1)
3030

3131
result = await self._session.execute(stmt)

src/ttt/presentation/aiogram/messages/command.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
from aiogram import md
2+
from aiogram.enums import ParseMode
13
from aiogram.methods import SendMessage
24
from aiogram.types.message import Message
35
from aiogram.utils.formatting import (
46
Bold,
7+
Text,
58
as_list,
69
as_marked_section,
710
)
@@ -12,17 +15,18 @@ def need_to_start_message(message: Message) -> SendMessage:
1215

1316

1417
def help_message(message: Message) -> SendMessage:
18+
description = Text(
19+
Bold("ttt!"),
20+
" — многопользовательские онлайн-крестики-нолики в Telegram.",
21+
)
22+
1523
content = as_list(
16-
as_marked_section(
17-
f"{Bold("ttt!"):}",
18-
"Многопользовательские онлайн-крестики-нолики в Telegram.",
19-
marker=" ",
20-
),
24+
description,
2125
as_marked_section(
2226
"Комманды:",
23-
"/game - чтобы начать игру",
24-
"/info - чтобы посмотреть информацию о себе",
25-
"/help - чтобы вывести это сообщение",
27+
Text(Bold("/game"), " — начать игру"),
28+
Text(Bold("/info"), " — посмотреть информацию о себе"),
29+
Text(Bold("/help"), " — вывести это сообщение"),
2630
marker=" ",
2731
),
2832
sep="\n\n",
Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
from aiogram.methods import SendMessage
22
from aiogram.types.message import Message
3-
from aiogram.utils.formatting import (
4-
Bold,
5-
as_key_value,
6-
as_list,
7-
as_marked_section,
8-
)
3+
from aiogram.utils.formatting import as_key_value, as_list
94

105

116
def player_info_message(
@@ -16,18 +11,23 @@ def player_info_message(
1611
is_in_game: bool, # noqa: FBT001
1712
) -> SendMessage:
1813
total = number_of_wins + number_of_defeats + number_of_draws
19-
winning_percentage = number_of_wins / total * 100
14+
15+
if total > 0:
16+
winning_percentage = number_of_wins / total * 100
17+
winning_percentage_text = f"{winning_percentage:.2f}"
18+
else:
19+
winning_percentage_text = None
2020

2121
content = as_list(
22-
as_marked_section(
23-
f"{Bold("Статистика"):}",
24-
as_key_value("Побед", number_of_wins),
25-
as_key_value("Поражений", number_of_defeats),
26-
as_key_value("Ничьих", number_of_draws),
27-
as_key_value("Процент побед", f"{winning_percentage:.2f}"),
28-
marker=" ",
22+
f"⭐ Побед: {number_of_wins}",
23+
f"💀 Поражений: {number_of_defeats}",
24+
f"🕊️ Ничьих: {number_of_draws}",
25+
*(
26+
[]
27+
if winning_percentage_text is None
28+
else as_key_value("📊 Процент побед", winning_percentage_text)
2929
),
30-
*(["Сейчас в партии."] if is_in_game else []),
31-
sep="\n\n",
30+
"",
31+
"⚔️ Сейчас в матче." if is_in_game else "💤 Сейчас не в матче",
3232
)
3333
return message.answer(**content.as_kwargs())
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
from ttt.presentation.aiogram.routes.other.all import other_routers
12
from ttt.presentation.aiogram.routes.player.all import player_routers
23

34

45
all_routers = (
56
*player_routers,
7+
*other_routers,
68
)

src/ttt/presentation/aiogram/routes/other/__init__.py

Whitespace-only changes.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from ttt.presentation.aiogram.routes.other.help import help_router
2+
3+
4+
other_routers = (
5+
help_router,
6+
)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from aiogram import Router
2+
from aiogram.filters import Command
3+
from aiogram.types import Message
4+
from dishka.integrations.aiogram import FromDishka, inject
5+
6+
from ttt.application.player.register_player import RegisterPlayer
7+
from ttt.presentation.aiogram.messages.command import help_message
8+
from ttt.presentation.aiogram.messages.common import anons_are_rohibited_message
9+
10+
11+
help_router = Router(name=__name__)
12+
13+
14+
@help_router.message(Command("help"))
15+
async def help(message: Message) -> None:
16+
await help_message(message)

src/ttt/presentation/aiogram/routes/player/view_player.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
view_player_router = Router(name=__name__)
1212

1313

14-
@view_player_router.message(Command("start"))
14+
@view_player_router.message(Command("info"))
1515
@inject
1616
async def _(
1717
message: Message, view_player: FromDishka[ViewPlayer[SendMessage]],

0 commit comments

Comments
 (0)