Update button labels from "🔙 Назад" to "⬅️ Назад" across multiple admin handlers and key management files for improved user interface consistency. This change enhances the visual clarity of navigation options within the application.
This commit is contained in:
@@ -24,7 +24,7 @@ async def show_coupon_management_menu(callback_query: types.CallbackQuery, state
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="➕ Создать купон", callback_data="create_coupon"))
|
||||
builder.row(InlineKeyboardButton(text="🎟️ Купоны", callback_data="coupons"))
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="admin"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="admin"))
|
||||
await callback_query.message.answer("🛠 Меню управления купонами:", reply_markup=builder.as_markup())
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ async def show_coupon_list(callback_query: types.CallbackQuery, session: Any):
|
||||
|
||||
if not coupons:
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="coupons_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="coupons_editor"))
|
||||
await callback_query.message.answer(
|
||||
"❌ На данный момент нет доступных купонов. 🚫\nВы можете вернуться в меню управления. 🔙",
|
||||
reply_markup=builder.as_markup(),
|
||||
@@ -68,7 +68,7 @@ async def show_coupon_list(callback_query: types.CallbackQuery, session: Any):
|
||||
if current_page < total_pages:
|
||||
builder.row(InlineKeyboardButton(text="➡️ Следующая", callback_data=f"coupons:{current_page + 1}"))
|
||||
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="coupons_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="coupons_editor"))
|
||||
await callback_query.message.answer(coupon_list, reply_markup=builder.as_markup())
|
||||
|
||||
except Exception as e:
|
||||
@@ -98,7 +98,7 @@ async def handle_delete_coupon(callback_query: types.CallbackQuery, session: Any
|
||||
@router.callback_query(F.data == "create_coupon", IsAdminFilter())
|
||||
async def handle_create_coupon(callback_query: types.CallbackQuery, state: FSMContext):
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="coupons_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="coupons_editor"))
|
||||
|
||||
await callback_query.message.answer(
|
||||
"🎫 <b>Введите данные для создания купона в формате:</b>\n\n"
|
||||
@@ -116,7 +116,7 @@ async def process_coupon_data(message: types.Message, state: FSMContext, session
|
||||
parts = text.split()
|
||||
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="coupons_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="coupons_editor"))
|
||||
|
||||
if len(parts) != 3:
|
||||
await message.answer(
|
||||
@@ -149,7 +149,7 @@ async def process_coupon_data(message: types.Message, state: FSMContext, session
|
||||
)
|
||||
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="coupons_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="coupons_editor"))
|
||||
|
||||
await message.answer(result_message, reply_markup=builder.as_markup())
|
||||
await state.clear()
|
||||
|
||||
@@ -138,7 +138,7 @@ async def user_stats_menu(callback_query: CallbackQuery, session: Any):
|
||||
@router.callback_query(F.data == "export_users_csv", IsAdminFilter())
|
||||
async def export_users_csv(callback_query: CallbackQuery, session: Any):
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_stats"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_stats"))
|
||||
try:
|
||||
users = await session.fetch(
|
||||
"""
|
||||
@@ -187,7 +187,7 @@ async def export_users_csv(callback_query: CallbackQuery, session: Any):
|
||||
@router.callback_query(F.data == "export_payments_csv", IsAdminFilter())
|
||||
async def export_payments_csv(callback_query: CallbackQuery, session: Any):
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_stats"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_stats"))
|
||||
try:
|
||||
payments = await session.fetch(
|
||||
"""
|
||||
@@ -238,7 +238,7 @@ async def handle_send_to_all(callback_query: CallbackQuery, state: FSMContext):
|
||||
builder.row(InlineKeyboardButton(text="📢 Отправить с подпиской", callback_data="send_to_subscribed"))
|
||||
builder.row(InlineKeyboardButton(text="📢 Отправить без подписки", callback_data="send_to_unsubscribed"))
|
||||
builder.row(InlineKeyboardButton(text="📢 Рассылка по кластеру", callback_data="send_to_cluster"))
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="admin"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="admin"))
|
||||
await callback_query.message.answer(
|
||||
"✍️ Выберите группу пользователей и введите текст сообщения для рассылки:",
|
||||
reply_markup=builder.as_markup(),
|
||||
@@ -279,7 +279,7 @@ async def handle_send_to_cluster(callback_query: CallbackQuery, state: FSMContex
|
||||
)
|
||||
)
|
||||
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="send_to"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="send_to"))
|
||||
await callback_query.message.answer(
|
||||
"✍️ Выберите кластер для рассылки сообщений:",
|
||||
reply_markup=builder.as_markup(),
|
||||
|
||||
@@ -37,7 +37,7 @@ async def handle_servers_editor(callback_query: types.CallbackQuery, session: An
|
||||
builder.row(InlineKeyboardButton(text=f"⚙️ {cluster_name}", callback_data=f"manage_cluster|{cluster_name}"))
|
||||
|
||||
builder.row(InlineKeyboardButton(text="➕ Добавить кластер", callback_data="add_cluster"))
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад в админку", callback_data="admin"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад в админку", callback_data="admin"))
|
||||
|
||||
await callback_query.message.answer(
|
||||
"<b>🔧 Управление кластерами</b>\n\n"
|
||||
@@ -235,7 +235,7 @@ async def handle_inbound_id_input(message: types.Message, state: FSMContext, ses
|
||||
)
|
||||
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад к кластерам", callback_data="servers_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад к кластерам", callback_data="servers_editor"))
|
||||
|
||||
await message.answer(
|
||||
f"✅ Кластер {cluster_name} и сервер {server_name} успешно добавлены!",
|
||||
@@ -285,7 +285,7 @@ async def handle_manage_cluster(callback_query: types.CallbackQuery, state: FSMC
|
||||
)
|
||||
)
|
||||
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад в управление кластерами", callback_data="servers_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад в управление кластерами", callback_data="servers_editor"))
|
||||
|
||||
await callback_query.message.answer(
|
||||
f"🔧 Управление серверами для кластера {cluster_name}",
|
||||
@@ -305,7 +305,7 @@ async def sync_cluster_handler(callback_query: types.CallbackQuery, session: Any
|
||||
await callback_query.message.answer(
|
||||
f"❌ Нет ключей для синхронизации в кластере {cluster_name}.",
|
||||
reply_markup=InlineKeyboardBuilder()
|
||||
.row(InlineKeyboardButton(text="🔙 Назад", callback_data="servers_editor"))
|
||||
.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="servers_editor"))
|
||||
.as_markup(),
|
||||
)
|
||||
return
|
||||
@@ -330,7 +330,7 @@ async def sync_cluster_handler(callback_query: types.CallbackQuery, session: Any
|
||||
await callback_query.message.answer(
|
||||
f"✅ Ключи успешно синхронизированы для кластера {cluster_name}.",
|
||||
reply_markup=InlineKeyboardBuilder()
|
||||
.row(InlineKeyboardButton(text="🔙 Назад", callback_data="servers_editor"))
|
||||
.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="servers_editor"))
|
||||
.as_markup(),
|
||||
)
|
||||
except Exception as e:
|
||||
@@ -338,7 +338,7 @@ async def sync_cluster_handler(callback_query: types.CallbackQuery, session: Any
|
||||
await callback_query.message.answer(
|
||||
f"❌ Произошла ошибка при синхронизации: {e}",
|
||||
reply_markup=InlineKeyboardBuilder()
|
||||
.row(InlineKeyboardButton(text="🔙 Назад", callback_data="servers_editor"))
|
||||
.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="servers_editor"))
|
||||
.as_markup(),
|
||||
)
|
||||
|
||||
@@ -374,7 +374,7 @@ async def handle_check_server_availability(callback_query: types.CallbackQuery,
|
||||
availability_message += f"❌ {server['server_name']}: Не удалось получить информацию. Ошибка: {e}\n"
|
||||
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data=f"manage_cluster|{cluster_name}"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data=f"manage_cluster|{cluster_name}"))
|
||||
|
||||
await in_progress_message.edit_text(availability_message, reply_markup=builder.as_markup())
|
||||
|
||||
@@ -402,7 +402,7 @@ async def handle_manage_server(callback_query: types.CallbackQuery, state: FSMCo
|
||||
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🗑️ Удалить", callback_data=f"delete_server|{server_name}"))
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data=f"manage_cluster|{cluster_name}"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data=f"manage_cluster|{cluster_name}"))
|
||||
|
||||
await callback_query.message.answer(
|
||||
f"<b>🔧 Информация о сервере {server_name}:</b>\n\n"
|
||||
@@ -438,7 +438,7 @@ async def handle_confirm_delete_server(callback_query: types.CallbackQuery, stat
|
||||
await delete_server(server_name, session)
|
||||
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад в управление кластерами", callback_data="servers_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад в управление кластерами", callback_data="servers_editor"))
|
||||
|
||||
await callback_query.message.answer(f"🗑️ Сервер {server_name} успешно удален.", reply_markup=builder.as_markup())
|
||||
|
||||
@@ -478,7 +478,7 @@ async def handle_backup_cluster(callback_query: types.CallbackQuery, session: An
|
||||
await create_backup_and_send_to_admins(xui)
|
||||
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="servers_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="servers_editor"))
|
||||
|
||||
await callback_query.message.answer(
|
||||
f"<b>Бэкап для кластера {cluster_name} был успешно создан и отправлен администраторам!</b>\n\n"
|
||||
|
||||
@@ -44,7 +44,7 @@ class UserEditorState(StatesGroup):
|
||||
@router.callback_query(F.data == "search_by_tg_id", IsAdminFilter())
|
||||
async def prompt_tg_id(callback_query: CallbackQuery, state: FSMContext):
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await callback_query.message.answer("🔍 Введите Telegram ID клиента:", reply_markup=builder.as_markup())
|
||||
await state.set_state(UserEditorState.waiting_for_tg_id)
|
||||
|
||||
@@ -52,7 +52,7 @@ async def prompt_tg_id(callback_query: CallbackQuery, state: FSMContext):
|
||||
@router.callback_query(F.data == "search_by_username", IsAdminFilter())
|
||||
async def prompt_username(callback_query: CallbackQuery, state: FSMContext):
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await callback_query.message.answer("🔍 Введите Username клиента:", reply_markup=builder.as_markup())
|
||||
await state.set_state(UserEditorState.waiting_for_username)
|
||||
|
||||
@@ -64,7 +64,7 @@ async def handle_username_input(message: types.Message, state: FSMContext, sessi
|
||||
|
||||
if not user_record:
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await message.answer(
|
||||
"🔍 Пользователь с указанным username не найден. 🚫",
|
||||
reply_markup=builder.as_markup(),
|
||||
@@ -80,7 +80,7 @@ async def handle_username_input(message: types.Message, state: FSMContext, sessi
|
||||
|
||||
if balance is None:
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await message.answer(
|
||||
"🚫 Пользователь с указанным tg_id не найден. 🔍",
|
||||
reply_markup=builder.as_markup(),
|
||||
@@ -109,7 +109,7 @@ async def handle_username_input(message: types.Message, state: FSMContext, sessi
|
||||
builder.row(InlineKeyboardButton(text="❌ Удалить клиента", callback_data=f"confirm_delete_user_{tg_id}"))
|
||||
builder.row(InlineKeyboardButton(text="🔄 Обновить клиента", callback_data=f"user_info|{tg_id}"))
|
||||
builder.row(InlineKeyboardButton(text="✉️ Отправить сообщение", callback_data=f"send_message_{tg_id}"))
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
|
||||
user_info = (
|
||||
f"📊 Информация о пользователе:\n\n"
|
||||
@@ -160,7 +160,7 @@ async def handle_tg_id_input(message: types.Message, state: FSMContext, session:
|
||||
|
||||
if balance is None:
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await message.answer(
|
||||
"❌ Пользователь с указанным tg_id не найден. 🔍",
|
||||
reply_markup=builder.as_markup(),
|
||||
@@ -189,7 +189,7 @@ async def handle_tg_id_input(message: types.Message, state: FSMContext, session:
|
||||
)
|
||||
builder.row(InlineKeyboardButton(text="✉️ Отправить сообщение", callback_data=f"send_message_{tg_id}"))
|
||||
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
|
||||
user_info = (
|
||||
f"📊 Информация о пользователе:\n\n"
|
||||
@@ -210,7 +210,7 @@ async def handle_restore_trial(callback_query: types.CallbackQuery, session: Any
|
||||
await update_trial(tg_id, 0, session)
|
||||
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад в меню администратора", callback_data="admin"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад в меню администратора", callback_data="admin"))
|
||||
|
||||
await callback_query.message.answer("✅ Триал успешно восстановлен.", reply_markup=builder.as_markup())
|
||||
|
||||
@@ -220,7 +220,7 @@ async def process_balance_change(callback_query: CallbackQuery, state: FSMContex
|
||||
tg_id = int(callback_query.data.split("_")[2])
|
||||
await state.update_data(tg_id=tg_id)
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await callback_query.message.answer("💸 Введите новую сумму баланса:", reply_markup=builder.as_markup())
|
||||
await state.set_state(UserEditorState.waiting_for_new_balance)
|
||||
|
||||
@@ -229,7 +229,7 @@ async def process_balance_change(callback_query: CallbackQuery, state: FSMContex
|
||||
async def handle_new_balance_input(message: types.Message, state: FSMContext, session: Any):
|
||||
if not message.text.isdigit() or int(message.text) < 0:
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await message.answer(
|
||||
"❌ Пожалуйста, введите корректную сумму для изменения баланса.",
|
||||
reply_markup=builder.as_markup(),
|
||||
@@ -251,7 +251,7 @@ async def handle_new_balance_input(message: types.Message, state: FSMContext, se
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(
|
||||
InlineKeyboardButton(
|
||||
text="🔙 Назад в меню администратора",
|
||||
text="⬅️ Назад в меню администратора",
|
||||
callback_data="admin",
|
||||
)
|
||||
)
|
||||
@@ -266,7 +266,7 @@ async def process_key_edit(callback_query: CallbackQuery, session: Any):
|
||||
|
||||
if not key_details:
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await callback_query.message.answer(
|
||||
"🔍 <b>Информация о ключе не найдена.</b> 🚫",
|
||||
reply_markup=builder.as_markup(),
|
||||
@@ -299,7 +299,7 @@ async def process_key_edit(callback_query: CallbackQuery, session: Any):
|
||||
callback_data=f"delete_key_admin|{email}",
|
||||
)
|
||||
)
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
|
||||
await callback_query.message.answer(response_message, reply_markup=builder.as_markup())
|
||||
|
||||
@@ -307,7 +307,7 @@ async def process_key_edit(callback_query: CallbackQuery, session: Any):
|
||||
@router.callback_query(F.data == "search_by_key_name", IsAdminFilter())
|
||||
async def prompt_key_name(callback_query: CallbackQuery, state: FSMContext):
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await callback_query.message.answer("🔑 Введите имя ключа:", reply_markup=builder.as_markup())
|
||||
await state.set_state(UserEditorState.waiting_for_key_name)
|
||||
|
||||
@@ -319,7 +319,7 @@ async def handle_key_name_input(message: types.Message, state: FSMContext, sessi
|
||||
|
||||
if not key_details:
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await message.answer(
|
||||
"🚫 Пользователь с указанным именем ключа не найден.",
|
||||
reply_markup=builder.as_markup(),
|
||||
@@ -353,7 +353,7 @@ async def handle_key_name_input(message: types.Message, state: FSMContext, sessi
|
||||
callback_data=f"delete_key_admin|{key_name}",
|
||||
)
|
||||
)
|
||||
key_buttons.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
key_buttons.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
|
||||
await message.answer(response_message, reply_markup=key_buttons.as_markup())
|
||||
await state.clear()
|
||||
@@ -376,7 +376,7 @@ async def handle_expiry_time_input(message: types.Message, state: FSMContext, se
|
||||
|
||||
if not email:
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await message.answer("📧 Email не найден в состоянии. 🚫", reply_markup=builder.as_markup())
|
||||
await state.clear()
|
||||
return
|
||||
@@ -391,7 +391,7 @@ async def handle_expiry_time_input(message: types.Message, state: FSMContext, se
|
||||
client_id = await get_client_id_by_email(email)
|
||||
if client_id is None:
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await message.answer(
|
||||
f"🚫 Клиент с email {email} не найден. 🔍",
|
||||
reply_markup=builder.as_markup(),
|
||||
@@ -402,7 +402,7 @@ async def handle_expiry_time_input(message: types.Message, state: FSMContext, se
|
||||
record = await get_key_details(email, session)
|
||||
if not record:
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await message.answer(
|
||||
"🚫 Клиент не найден в базе данных. 🔍",
|
||||
reply_markup=builder.as_markup(),
|
||||
@@ -438,11 +438,11 @@ async def handle_expiry_time_input(message: types.Message, state: FSMContext, se
|
||||
)
|
||||
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="admin"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="admin"))
|
||||
await message.answer(response_message, reply_markup=builder.as_markup())
|
||||
except ValueError:
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await message.answer(
|
||||
"❌ Пожалуйста, используйте формат: YYYY-MM-DD HH:MM:SS.",
|
||||
reply_markup=builder.as_markup(),
|
||||
@@ -459,7 +459,7 @@ async def process_callback_delete_key(callback_query: types.CallbackQuery, sessi
|
||||
|
||||
if key_details is None:
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
await callback_query.message.answer("🔍 Ключ не найден. 🚫", reply_markup=builder.as_markup())
|
||||
return
|
||||
|
||||
@@ -526,7 +526,7 @@ async def handle_user_info(callback_query: types.CallbackQuery, state: FSMContex
|
||||
builder.row(InlineKeyboardButton(text="❌ Удалить клиента", callback_data=f"confirm_delete_user_{tg_id}"))
|
||||
builder.row(InlineKeyboardButton(text="🔄 Обновить клиента", callback_data=f"user_info|{tg_id}"))
|
||||
builder.row(InlineKeyboardButton(text="✉️ Отправить сообщение", callback_data=f"send_message_{tg_id}"))
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor"))
|
||||
|
||||
user_info = (
|
||||
f"📊 Информация о пользователе:\n\n"
|
||||
@@ -581,7 +581,7 @@ async def delete_user(callback_query: types.CallbackQuery, session: Any):
|
||||
try:
|
||||
await delete_user_data(session, tg_id)
|
||||
|
||||
back_button = InlineKeyboardButton(text="🔙 Назад", callback_data="user_editor")
|
||||
back_button = InlineKeyboardButton(text="⬅️ Назад", callback_data="user_editor")
|
||||
keyboard = InlineKeyboardMarkup(inline_keyboard=[[back_button]])
|
||||
|
||||
await callback_query.message.answer(f"🗑️ Пользователь с ID {tg_id} был удален.", reply_markup=keyboard)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
GIFT = "🎁 Подарить подписку"
|
||||
MY_GIFTS = "🎁 Мои подарки"
|
||||
PROFILE = "👤 Личный кабинет"
|
||||
BACK = "🔙 Назад"
|
||||
BACK = "⬅️ Назад"
|
||||
GIFTS_ABOUT = "<b>Дарите подарки и следите, чтобы они дошли до адресата! 🎄</b>"
|
||||
SHARE_GIFT = "🎁 Поделиться подарком"
|
||||
|
||||
@@ -193,8 +193,8 @@ async def create_key(
|
||||
builder.row(InlineKeyboardButton(text=country, callback_data=callback_data))
|
||||
logger.info(f"[Country Selection] Добавлена кнопка для страны: {country} с callback_data: {callback_data}")
|
||||
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="profile"))
|
||||
logger.info("[Country Selection] Добавлена кнопка '🔙 Назад'.")
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="profile"))
|
||||
logger.info("[Country Selection] Добавлена кнопка '⬅️ Назад'.")
|
||||
|
||||
if isinstance(message_or_query, Message):
|
||||
logger.info("[Country Selection] Сообщение пользователя - тип Message.")
|
||||
|
||||
@@ -218,7 +218,7 @@ async def process_callback_view_key(callback_query: types.CallbackQuery, session
|
||||
)
|
||||
else:
|
||||
builder.row(InlineKeyboardButton(text="⏳ Продлить", callback_data=f"renew_key|{key_name}"))
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="view_keys"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="view_keys"))
|
||||
builder.row(InlineKeyboardButton(text="👤 Личный кабинет", callback_data="profile"))
|
||||
|
||||
keyboard = builder.as_markup()
|
||||
@@ -343,7 +343,7 @@ async def process_callback_renew_key(callback_query: types.CallbackQuery, sessio
|
||||
)
|
||||
)
|
||||
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="view_keys"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="view_keys"))
|
||||
|
||||
balance = await get_balance(tg_id)
|
||||
|
||||
|
||||
@@ -214,7 +214,7 @@ async def process_custom_amount_selection(callback_query: types.CallbackQuery, s
|
||||
logger.info(f"User {tg_id} chose to enter a custom amount.")
|
||||
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="🔙 Назад", callback_data="pay_robokassa"))
|
||||
builder.row(InlineKeyboardButton(text="⬅️ Назад", callback_data="pay_robokassa"))
|
||||
|
||||
await callback_query.message.answer(
|
||||
"Пожалуйста, введите сумму пополнения.",
|
||||
|
||||
Reference in New Issue
Block a user