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}')]]