diff --git a/src/answers.py b/src/answers.py index 1100a46..6e7f387 100644 --- a/src/answers.py +++ b/src/answers.py @@ -5,10 +5,11 @@ 'auth': '🔑 Авторизация', 'about': '📄 Описание', 'back': '◀️ Назад', - 'kb_print': 'Настройки печати', - 'kb_print_copies': 'Копий:', - 'kb_print_side': 'Односторонняя печать', - 'kb_print_two_side': 'Двухсторонняя печать', + 'qr': '📷 Отсканировать QR', + 'kb_print': '⚙️ Настройки печати', + 'kb_print_copies': '📑 Копий:', + 'kb_print_side': '📎 Односторонняя печать', + 'kb_print_two_side': '🖇 Двухсторонняя печать', 'hello': '👋🏻 Привет! Я телеграм-бот бесплатного принтера.\n' 'Отправьте PDF файл и получите PIN для печати.', 'help': 'Я телеграм-бот бесплатного принтера профкома студентов физического факультета МГУ!\n\n' @@ -45,8 +46,8 @@ 'file_size_error': '⚠️ Принимаются только файлы размером меньше 3 MB.\nФайл {} не принят.', 'send_to_print': '✅ Файл {} успешно загружен. ' 'Для печати подойдите к принтеру и введите PIN:\n\n{}\n\n' - 'Или отсканируйте QR код на экране ' - 'принтера.\n', + 'Или нажмите кнопку ниже.', + 'qr_print': 'https://printer.ui.test.profcomff.com/qr#{}', 'settings_warning': '\nНастройки сохраняются автоматически.', 'settings_change_fail': 'Что-то сломалось, настройки печати не изменены, попробуйте через пару минут.', 'unknown_keyboard_payload': 'Видимо бот обновился, выполните команду /start', diff --git a/src/handlers.py b/src/handlers.py index d5e2e3e..b95e5d0 100644 --- a/src/handlers.py +++ b/src/handlers.py @@ -9,7 +9,7 @@ import requests from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker -from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup +from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup, WebAppInfo from telegram.constants import ParseMode from telegram.error import TelegramError from telegram.ext import ContextTypes, CallbackContext @@ -119,9 +119,10 @@ async def handler_print(update: Update, context: ContextTypes.DEFAULT_TYPE): rfile = requests.post(settings.PRINT_URL + '/file/' + pin, files=files) if rfile.status_code == 200: reply_markup = InlineKeyboardMarkup( - [[InlineKeyboardButton(ans['kb_print'], callback_data=f'print_settings_{pin}')]]) + [[InlineKeyboardButton(text=ans['qr'], web_app=WebAppInfo(ans['qr_print'].format(pin)))], + [InlineKeyboardButton(ans['kb_print'], callback_data=f'print_settings_{pin}')]]) await update.message.reply_text( - text=ans['send_to_print'].format(update.message.document.file_name, pin, pin), + text=ans['send_to_print'].format(update.message.document.file_name, pin), reply_markup=reply_markup, reply_to_message_id=update.message.id, disable_web_page_preview=True, @@ -201,6 +202,7 @@ async def __print_settings_solver(update: Update, context: CallbackContext): return keyboard = [ + [InlineKeyboardButton(text=ans['qr'], web_app=WebAppInfo(ans['qr_print'].format(pin)))], [InlineKeyboardButton(f'{ans["kb_print_copies"]} {options["copies"]}', callback_data=f'print_copies_{pin}')], [InlineKeyboardButton(ans['kb_print_two_side'] if options['two_sided'] else ans['kb_print_side'], callback_data=f'print_twosided_{pin}')]]