Skip to content

Commit 50a0805

Browse files
authored
feat(user-create): add random username button (#182)
1 parent dd1c3e4 commit 50a0805

File tree

4 files changed

+31
-5
lines changed

4 files changed

+31
-5
lines changed

app/keys/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from ._callbacks import PageCB, SelectCB
2-
from ._enums import Pages, Actions, YesOrNot, SelectAll, JsonHandler
2+
from ._enums import Pages, Actions, YesOrNot, SelectAll, JsonHandler, RandomHandler
33
from .manager import _KeyboardsManager
44

55
BotKeys = _KeyboardsManager()
@@ -13,4 +13,5 @@
1313
"YesOrNot",
1414
"SelectAll",
1515
"JsonHandler",
16+
"RandomHandler",
1617
]

app/keys/_enums.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,7 @@ class SelectAll(str, Enum):
3636

3737
class JsonHandler(str, Enum):
3838
USER = "user"
39+
40+
41+
class RandomHandler(str, Enum):
42+
USERNAME = "username"

app/routers/users/create.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
11
import asyncio
22
import json
3+
from secrets import token_hex
34

45
from aiogram import Router, F
56
from aiogram.types import CallbackQuery, Message, BufferedInputFile
67
from aiogram.filters import StateFilter
78
from aiogram.fsm.state import State, StatesGroup
89
from aiogram.fsm.context import FSMContext
910

10-
from app.keys import BotKeys, PageCB, Pages, Actions, SelectCB, SelectAll, JsonHandler
11+
from app.keys import (
12+
BotKeys,
13+
PageCB,
14+
Pages,
15+
Actions,
16+
SelectCB,
17+
SelectAll,
18+
JsonHandler,
19+
RandomHandler,
20+
)
1121
from app.db import crud
1222
from app.settings.language import MessageTexts
1323
from app.api import ClinetManager
@@ -75,10 +85,14 @@ async def adminselect(
7585
return await callback.message.edit_text(
7686
text=MessageTexts.ASK_REMARK,
7787
reply_markup=BotKeys.selector(
78-
data=[(MessageTexts.CREATE_WITH_JSON, JsonHandler.USER)],
88+
data=[
89+
(MessageTexts.RANDOM_USERNAME, RandomHandler.USERNAME),
90+
(MessageTexts.CREATE_WITH_JSON, JsonHandler.USER),
91+
],
7992
types=Pages.USERS,
8093
action=Actions.JSON,
8194
panel=callback_data.panel,
95+
width=1,
8296
),
8397
)
8498

@@ -90,9 +104,15 @@ async def adminselect(
90104
async def json_start(
91105
callback: CallbackQuery, callback_data: SelectCB, state: FSMContext
92106
):
93-
await state.set_state(UserCreateForm.JSON)
107+
if callback_data.select == JsonHandler.USER:
108+
await state.set_state(UserCreateForm.JSON)
109+
text = MessageTexts.ASK_JSON
110+
else:
111+
await state.update_data(username=str(token_hex(3)))
112+
await state.set_state(UserCreateForm.USERCOUNT)
113+
text = MessageTexts.ASK_COUNT
94114
return await callback.message.edit_text(
95-
text=MessageTexts.ASK_JSON,
115+
text=text,
96116
reply_markup=BotKeys.cancel(),
97117
)
98118

app/settings/language/_message.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class _MessageSettings(BaseSettings):
4444
ASK_DATE_LIMIT: str = "Enter DateLimit: [0-9]"
4545
ASK_CONFIGS: str = "Select Configs:"
4646
FAILED_USERNAME: str = "❌ Failed to create {username}."
47+
RANDOM_USERNAME: str = "Random Username"
4748
USER_INFO: str = (
4849
"• <b>Username:</b> <code>{username}</code>\n"
4950
"• <b>Data Limit:</b> <code>{data_limit}</code>\n"

0 commit comments

Comments
 (0)