Skip to content

Commit 910157d

Browse files
authored
feat: add server and user back keyboard (#184)
* feat: add backs to keys * ref: keys * feat: add back to server * feat: add back to actions * feat: add back to stats * fix: user back * feat: add back to users * feat: add back to users
1 parent 0744a60 commit 910157d

File tree

22 files changed

+274
-60
lines changed

22 files changed

+274
-60
lines changed

app/keys/manager.py

Lines changed: 109 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ def lister(
9696
filters: list[str] | None = None,
9797
select_filters: str | None = None,
9898
search: bool = False,
99+
server_back: int | None = None,
100+
user_back: int | None = None,
99101
) -> InlineKeyboardMarkup:
100102
kb = InlineKeyboardBuilder()
101103

@@ -184,17 +186,66 @@ def lister(
184186
),
185187
width=2,
186188
)
187-
189+
if server_back and not user_back:
190+
kb.row(
191+
InlineKeyboardButton(
192+
text=KeyboardTexts.BACK,
193+
callback_data=PageCB(
194+
page=Pages.MENU, action=Actions.LIST, panel=server_back
195+
).pack(),
196+
),
197+
width=1,
198+
)
199+
if server_back and user_back:
200+
kb.row(
201+
InlineKeyboardButton(
202+
text=KeyboardTexts.BACK,
203+
callback_data=PageCB(
204+
page=Pages.USERS,
205+
action=Actions.INFO,
206+
dataid=user_back,
207+
panel=server_back,
208+
).pack(),
209+
),
210+
width=1,
211+
)
188212
return kb.as_markup()
189213

190214
def cancel(
191215
self,
216+
server_back: int | None = None,
217+
user_back: int | None = None,
192218
) -> InlineKeyboardMarkup:
193219
kb = InlineKeyboardBuilder()
194220

195221
kb.button(
196222
text=KeyboardTexts.HOMES, callback_data=PageCB(page=Pages.HOME).pack()
197223
)
224+
225+
if server_back and not user_back:
226+
kb.row(
227+
InlineKeyboardButton(
228+
text=KeyboardTexts.BACK,
229+
callback_data=PageCB(
230+
page=Pages.MENU, action=Actions.LIST, panel=server_back
231+
).pack(),
232+
),
233+
width=1,
234+
)
235+
if server_back and user_back:
236+
kb.row(
237+
InlineKeyboardButton(
238+
text=KeyboardTexts.BACK,
239+
callback_data=PageCB(
240+
page=Pages.USERS,
241+
action=Actions.INFO,
242+
dataid=user_back,
243+
panel=server_back,
244+
).pack(),
245+
),
246+
width=1,
247+
)
248+
198249
return kb.as_markup()
199250

200251
def selector(
@@ -207,6 +258,8 @@ def selector(
207258
panel: int | None = None,
208259
extra: str | None = None,
209260
all_selects: bool = False,
261+
user_back: int | None = None,
262+
server_back: int | None = None,
210263
) -> InlineKeyboardMarkup:
211264
kb = InlineKeyboardBuilder()
212265

@@ -321,10 +374,40 @@ def selector(
321374
width=1,
322375
)
323376

377+
if server_back and not user_back:
378+
kb.row(
379+
InlineKeyboardButton(
380+
text=KeyboardTexts.BACK,
381+
callback_data=PageCB(
382+
page=Pages.MENU, action=Actions.LIST, panel=server_back
383+
).pack(),
384+
),
385+
width=1,
386+
)
387+
if server_back and user_back:
388+
kb.row(
389+
InlineKeyboardButton(
390+
text=KeyboardTexts.BACK,
391+
callback_data=PageCB(
392+
page=Pages.USERS,
393+
action=Actions.INFO,
394+
dataid=user_back,
395+
panel=server_back,
396+
).pack(),
397+
),
398+
width=1,
399+
)
400+
324401
return kb.as_markup()
325402

326403
def modify(
327-
self, dataid: int, datatypes: list[Enum], page: Pages, panel: int | None = None
404+
self,
405+
dataid: int,
406+
datatypes: list[Enum],
407+
page: Pages,
408+
panel: int | None = None,
409+
server_back: int | None = None,
410+
user_back: int | None = None,
328411
) -> InlineKeyboardMarkup:
329412
kb = InlineKeyboardBuilder()
330413

@@ -349,4 +432,28 @@ def modify(
349432
width=1,
350433
)
351434

435+
if server_back and not user_back:
436+
kb.row(
437+
InlineKeyboardButton(
438+
text=KeyboardTexts.BACK,
439+
callback_data=PageCB(
440+
page=Pages.MENU, action=Actions.LIST, panel=server_back
441+
).pack(),
442+
),
443+
width=1,
444+
)
445+
if server_back and user_back:
446+
kb.row(
447+
InlineKeyboardButton(
448+
text=KeyboardTexts.BACK,
449+
callback_data=PageCB(
450+
page=Pages.USERS,
451+
action=Actions.INFO,
452+
dataid=user_back,
453+
panel=server_back,
454+
).pack(),
455+
),
456+
width=1,
457+
)
458+
352459
return kb.as_markup()

app/routers/actions/items/admin.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ async def fromadmin(
5050
admins = await ClinetManager.get_admins(server=server)
5151
if not admins:
5252
track = await callback.message.edit_text(
53-
text=MessageTexts.NOT_FOUND, reply_markup=BotKeys.cancel()
53+
text=MessageTexts.NOT_FOUND,
54+
reply_markup=BotKeys.cancel(server_back=server.id),
5455
)
5556
return await tracker.add(track)
5657
return await callback.message.edit_text(
@@ -60,6 +61,7 @@ async def fromadmin(
6061
types=Pages.ACTIONS,
6162
action=Actions.INFO,
6263
panel=server.id,
64+
server_back=server.id,
6365
),
6466
)
6567

@@ -80,7 +82,8 @@ async def toadmin(callback: CallbackQuery, callback_data: SelectCB, state: FSMCo
8082
admins = await ClinetManager.get_admins(server=server)
8183
if not admins:
8284
track = await callback.message.edit_text(
83-
text=MessageTexts.NOT_FOUND, reply_markup=BotKeys.cancel()
85+
text=MessageTexts.NOT_FOUND,
86+
reply_markup=BotKeys.cancel(server_back=server.id),
8487
)
8588
return await tracker.add(track)
8689
await state.set_state(AdminActionsForm.TO)
@@ -91,6 +94,7 @@ async def toadmin(callback: CallbackQuery, callback_data: SelectCB, state: FSMCo
9194
types=Pages.ACTIONS,
9295
action=Actions.INFO,
9396
panel=server.id,
97+
server_back=server.id,
9498
),
9599
)
96100

@@ -118,6 +122,7 @@ async def confrimaction(
118122
types=Pages.ACTIONS,
119123
action=Actions.INFO,
120124
panel=server.id,
125+
server_back=server.id,
121126
),
122127
)
123128

@@ -136,7 +141,7 @@ async def action(callback: CallbackQuery, callback_data: SelectCB, state: FSMCon
136141

137142
if callback_data.select == YesOrNot.NO.value:
138143
track = await callback.message.edit_text(
139-
text=MessageTexts.FAILED, reply_markup=BotKeys.cancel()
144+
text=MessageTexts.FAILED, reply_markup=BotKeys.cancel(server_back=server.id)
140145
)
141146
return await tracker.add(track)
142147

@@ -176,6 +181,7 @@ async def process_user_batch(users: list[MarzneshinUserResponse]) -> int:
176181
await asyncio.sleep(0.01)
177182

178183
track = await callback.message.answer(
179-
text=f"Action Finished: {success}/{all_users}", reply_markup=BotKeys.cancel()
184+
text=f"Action Finished: {success}/{all_users}",
185+
reply_markup=BotKeys.cancel(server_back=server.id),
180186
)
181187
return await tracker.cleardelete(callback, track)

app/routers/actions/items/configs.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ async def select(callback: CallbackQuery, callback_data: SelectCB, state: FSMCon
4444
admins = await ClinetManager.get_admins(server=server)
4545
if not admins:
4646
track = await callback.message.edit_text(
47-
text=MessageTexts.NOT_FOUND, reply_markup=BotKeys.cancel()
47+
text=MessageTexts.NOT_FOUND,
48+
reply_markup=BotKeys.cancel(server_back=server.id),
4849
)
4950
return await tracker.add(track)
5051

@@ -56,6 +57,7 @@ async def select(callback: CallbackQuery, callback_data: SelectCB, state: FSMCon
5657
types=Pages.ACTIONS,
5758
action=Actions.INFO,
5859
panel=server.id,
60+
server_back=server.id,
5961
),
6062
)
6163

@@ -78,7 +80,8 @@ async def admin(callback: CallbackQuery, callback_data: SelectCB, state: FSMCont
7880
configs = await ClinetManager.get_configs(server)
7981
if not configs:
8082
track = await callback.message.edit_text(
81-
text=MessageTexts.NOT_FOUND, reply_markup=BotKeys.cancel()
83+
text=MessageTexts.NOT_FOUND,
84+
reply_markup=BotKeys.cancel(server_back=server.id),
8285
)
8386
return await tracker.add(track)
8487

@@ -91,6 +94,7 @@ async def admin(callback: CallbackQuery, callback_data: SelectCB, state: FSMCont
9194
action=Actions.INFO,
9295
panel=server.id,
9396
width=1,
97+
server_back=server.id,
9498
),
9599
)
96100

@@ -115,7 +119,8 @@ async def action(callback: CallbackQuery, callback_data: SelectCB, state: FSMCon
115119
)
116120
if not target_config:
117121
track = await callback.message.edit_text(
118-
text=MessageTexts.NOT_FOUND, reply_markup=BotKeys.cancel()
122+
text=MessageTexts.NOT_FOUND,
123+
reply_markup=BotKeys.cancel(server_back=server.id),
119124
)
120125
return await tracker.add(track)
121126

@@ -173,6 +178,7 @@ async def process_user(user: MarzneshinUserResponse):
173178
page += 1
174179

175180
track = await callback.message.answer(
176-
text=f"Action Finished: {success}/{all_users}", reply_markup=BotKeys.cancel()
181+
text=f"Action Finished: {success}/{all_users}",
182+
reply_markup=BotKeys.cancel(server_back=server.id),
177183
)
178184
return await tracker.cleardelete(callback, track)

app/routers/actions/items/users.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ async def select(callback: CallbackQuery, callback_data: SelectCB, state: FSMCon
5151
admins = await ClinetManager.get_admins(server=server)
5252
if not admins:
5353
track = await callback.message.edit_text(
54-
text=MessageTexts.NOT_FOUND, reply_markup=BotKeys.cancel()
54+
text=MessageTexts.NOT_FOUND,
55+
reply_markup=BotKeys.cancel(server_back=server.id),
5556
)
5657
return await tracker.add(track)
5758
admins = [admin.username for admin in admins]
@@ -67,6 +68,7 @@ async def select(callback: CallbackQuery, callback_data: SelectCB, state: FSMCon
6768
types=Pages.ACTIONS,
6869
action=Actions.INFO,
6970
panel=server.id,
71+
server_back=server.id,
7072
),
7173
)
7274

@@ -92,6 +94,7 @@ async def admins(callback: CallbackQuery, callback_data: SelectCB, state: FSMCon
9294
types=Pages.ACTIONS,
9395
action=Actions.INFO,
9496
panel=server.id,
97+
server_back=server.id,
9598
),
9699
)
97100

@@ -110,7 +113,7 @@ async def action(callback: CallbackQuery, callback_data: SelectCB, state: FSMCon
110113

111114
if callback_data.select == YesOrNot.NO.value:
112115
track = await callback.message.edit_text(
113-
text=MessageTexts.FAILED, reply_markup=BotKeys.cancel()
116+
text=MessageTexts.FAILED, reply_markup=BotKeys.cancel(server_back=server.id)
114117
)
115118
return await tracker.add(track)
116119

@@ -134,7 +137,7 @@ async def action(callback: CallbackQuery, callback_data: SelectCB, state: FSMCon
134137
)
135138
return await callback.message.edit_text(
136139
MessageTexts.SUCCESS if result else MessageTexts.FAILED,
137-
reply_markup=BotKeys.cancel(),
140+
reply_markup=BotKeys.cancel(server_back=server.id),
138141
)
139142

140143
page = 1
@@ -168,6 +171,7 @@ async def process_user_batch(users: list[MarzneshinUserResponse]) -> int:
168171
await asyncio.sleep(0.01)
169172

170173
track = await callback.message.answer(
171-
text=f"Action Finished: {success}/{all_users}", reply_markup=BotKeys.cancel()
174+
text=f"Action Finished: {success}/{all_users}",
175+
reply_markup=BotKeys.cancel(server_back=server.id),
172176
)
173177
return await tracker.cleardelete(callback, track)

app/routers/actions/menu.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,6 @@ async def data(callback: CallbackQuery, callback_data: PageCB):
3838
types=Pages.ACTIONS,
3939
action=Actions.INFO,
4040
panel=server.id,
41+
server_back=server.id,
4142
),
4243
)

app/routers/base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ async def start(message: Message, state: FSMContext):
5858
action=Actions.MODIFY,
5959
extra=user.username,
6060
panel=server.id,
61+
server_back=server.id,
6162
),
6263
)
6364
return await tracker.add(track)

app/routers/servers/data.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,6 @@ async def data(callback: CallbackQuery, callback_data: PageCB):
3434
],
3535
page=Pages.SERVERS,
3636
panel=server.id,
37+
server_back=server.id,
3738
),
3839
)

app/routers/servers/modify.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,14 @@ async def start_modify(
6060
types=Pages.SERVERS,
6161
action=Actions.MODIFY,
6262
panel=server.id,
63+
server_back=server.id,
6364
),
6465
)
6566

6667
await state.set_state(ServerModifyForm.ALL)
67-
return await callback.message.edit_text(text=text, reply_markup=BotKeys.cancel())
68+
return await callback.message.edit_text(
69+
text=text, reply_markup=BotKeys.cancel(server_back=server.id)
70+
)
6871

6972

7073
@router.message(StateFilter(ServerModifyForm.ALL))
@@ -113,7 +116,7 @@ async def finish_modify(message: Message, state: FSMContext):
113116
await state.clear()
114117
track = await message.answer(
115118
text=MessageTexts.SUCCESS if server_modify else MessageTexts.FAILED,
116-
reply_markup=BotKeys.cancel(),
119+
reply_markup=BotKeys.cancel(server_back=serverid),
117120
)
118121
return await tracker.cleardelete(message, track)
119122

@@ -132,7 +135,7 @@ async def remove(callback: CallbackQuery, callback_data: SelectCB, state: FSMCon
132135

133136
if callback_data.select == YesOrNot.NO.value:
134137
track = await callback.message.edit_text(
135-
text=MessageTexts.FAILED, reply_markup=BotKeys.cancel()
138+
text=MessageTexts.FAILED, reply_markup=BotKeys.cancel(server_back=server.id)
136139
)
137140
return await tracker.add(track)
138141

@@ -157,5 +160,5 @@ async def remove(callback: CallbackQuery, callback_data: SelectCB, state: FSMCon
157160
)
158161
return await callback.message.edit_text(
159162
text=MessageTexts.SUCCESS if action else MessageTexts.FAILED,
160-
reply_markup=BotKeys.cancel(),
163+
reply_markup=BotKeys.cancel(server_back=server.id),
161164
)

app/routers/stats/show.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,6 @@ async def show_stats(callback: CallbackQuery, callback_data: PageCB):
100100
)
101101

102102
track = await callback.message.edit_text(
103-
text=stats_text, reply_markup=BotKeys.cancel(), parse_mode="HTML"
103+
text=stats_text, reply_markup=BotKeys.cancel(server_back=server.id)
104104
)
105105
await tracker.add(track)

0 commit comments

Comments
 (0)