Skip to content

Commit

Permalink
Refactor answers
Browse files Browse the repository at this point in the history
  • Loading branch information
annndruha committed Sep 9, 2023
1 parent 478d4e5 commit 134113e
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 96 deletions.
2 changes: 2 additions & 0 deletions src/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
handler_start,
handler_unknown_command,
)
from src.errors_solver import native_error_handler
from src.settings import Settings


Expand Down Expand Up @@ -45,4 +46,5 @@
application.add_handler(MessageHandler(filters.Document.ALL, handler_mismatch_doctype))
application.add_handler(MessageHandler(filters.UpdateType.MESSAGE & filters.TEXT, handler_register))
application.add_handler(MessageHandler(filters.UpdateType.MESSAGE, handler_other_messages))
application.add_error_handler(native_error_handler)
application.run_polling()
118 changes: 64 additions & 54 deletions src/answers.py
Original file line number Diff line number Diff line change
@@ -1,57 +1,67 @@
# Marakulin Andrey https://github.com/Annndruha
# 2023

ans = {
"auth": "🔑 Авторизация",
"about": "📄 Описание",
"back": "◀️ Назад",
"qr": "📷 Печать по QR",
"kb_print": "⚙️ Настройки печати",
"kb_print_copies": "📑 Копий:",
"kb_print_side": "📎 Односторонняя печать",
"kb_print_two_side": "🖇 Двухсторонняя печать",
"hello": "👋🏻 Привет! Я телеграм-бот бесплатного принтера.\n" "Отправьте PDF файл и получите PIN для печати.",
"help": "Я телеграм-бот бесплатного принтера профкома студентов физического факультета МГУ!\n\n"
"❔ Отправьте PDF файл и получите PIN для печати. "
"Поддерживаются только <b>.pdf</b> файлы размером не более 3МБ.\n"
"С этим PIN необходимо подойти к принтеру и ввести его в терминал печати. "
"Либо отсканировать QR-код на принтере с помощью кнопки. После этого начнётся печать."
"\n\n⚙️ Настройки печати можно изменять после отправки файла, они сохраняются автоматически. "
"В момент печати используются самые последние настройки."
"\n\n❗️ Файлы, которые вы отправляете через бота, будут храниться в течение нескольких месяцев на сервере "
"в Москве, а также в этом чате Telegram.\nДоступ к файлам имеет узкий круг лиц, "
"ответственных за работоспособность сервиса печати.\n"
"Мы <b>НЕ</b> рекомендуем использовать данный сервис для печати конфиденциальных документов!"
"\n\n💻 Бот разработан группой программистов профкома, как и приложение "
'<a href="https://app.profcomff.com">Твой ФФ!</a> '
"В приложении вы сможете найти больше настроек печати, расписание и много других возможностей.\n"
'Так же есть <a href="https://vk.me/profcomff_print_bot">бот для печати ВКонтакте</a>.',
"val_fail": "⚠️ Проверка не пройдена. Удостоверьтесь что вы состоите в профсоюзе и правильно ввели данные."
"\n\nВведите фамилию и номер профсоюзного билета в формате:\n\nИванов\n1234567",
"val_pass": "🥳 Поздравляю! Проверка пройдена и данные сохранены для этого телеграм-аккаунта. Можете присылать pdf.",
"val_need": "👤 Для использования принтера необходимо авторизоваться.\n"
"Отправьте фамилию и номер профсоюзного билета в формате:\n\nИванов\n1234567",
"val_update_fail": "Сообщение не распознано.\nЧтобы открыть инструкцию введите: /help\nДля того чтобы обновить "
"данные авторизации введите фамилию и номер"
"профсоюзного билета в формате:\n\nИванов\n1234567",
"val_update_pass": "🥳 Поздравляю! Проверка пройдена и данные обновлены.",
"val_addition": "\n\nНо для начала нужно авторизоваться. Нажмите на кнопку ниже:",
"val_info": "Вы авторизованы!\nВаш id в телеграм: <code>{}</code>\nФамилия: <code>{}</code>\nНомер профсоюзного "
"билета: <code>{}</code>",
"unknown_command": "Неизвестная команда.\nУ бота лишь три команды: /start /help /auth",
"only_pdf": "Документы на печать принимаются только в формате PDF",
"doc_not_accepted": "⚠️ Документ не принят, сначала авторизуйтесь.\n"
"Отправьте фамилию и номер профсоюзного билета в формате:\n\nИванов\n1234567",
"file_size_error": "⚠️ Принимаются только файлы размером меньше 3 MB.\nФайл <b>{}</b> не принят.",
"send_to_print": "✅ Файл <b>{}</b> успешно загружен. "
"Для печати подойдите к принтеру и введите PIN:\n\n<b>{}</b>\n\n"
"Для быстрой печати отсканируйте QR код на экране принтера.",
"qr_print": "{}{}",
"settings_warning": "\nНастройки сохраняются автоматически.",
"settings_change_fail": "Что-то сломалось, настройки печати не изменены, попробуйте через пару минут.",
"unknown_keyboard_payload": "Видимо бот обновился, выполните команду /start",
"im_broken": "Глубоко внутри меня что-то сломалось...\nПопробуйте через пару минут.",
"download_error": "Ошибка получения файла, попробуйте позже.",
"print_err": "😵 Ошибка сервера печати. Попробуйте позже.",
"db_err": "😵 Ошибка базы данных. Попробуйте ещё раз, если не получилось, то попробуйте позже.",
}
from dataclasses import dataclass


@dataclass
class Answers:
auth = '🔑 Авторизация'
about = '📄 Описание'
back = '◀️ Назад'
qr = '📷 Печать по QR'
kb_print = '⚙️ Настройки печати'
kb_print_copies = '📑 Копий:'
kb_print_side = '📎 Односторонняя печать'
kb_print_two_side = '🖇 Двухсторонняя печать'
hello = '👋🏻 Привет! Я телеграм-бот бесплатного принтера.\n' 'Отправьте PDF файл и получите PIN для печати.'
help = ('Я телеграм-бот бесплатного принтера профкома студентов физического факультета МГУ!\n\n'
'❔ Отправьте PDF файл и получите PIN для печати. '
'Поддерживаются <b>только .pdf</b> файлы не более 3МБ.\n'
'С этим PIN необходимо подойти к принтеру и ввести его в терминал печати. '
'Либо отсканировать QR-код на принтере с помощью кнопки. После этого начнётся печать.'
'\n\n'
'⚙️ Настройки печати можно изменять после отправки файла, они сохраняются автоматически. '
'В момент печати используются самые последние настройки.\n\n'
'❗️ Файлы, которые вы отправляете через бота, будут храниться в течение нескольких месяцев'
' на сервере в Москве, а также в этом чате Telegram.\n'
'Доступ к файлам имеет узкий круг лиц, ответственных за работоспособность сервиса печати.\n'
'Мы <b>НЕ</b> рекомендуем использовать данный сервис для печати конфиденциальных документов!\n\n'
'💻 Бот разработан группой программистов профкома, '
'как и приложение <a href="https://app.profcomff.com">Твой ФФ!</a> '
'В приложении вы сможете найти больше настроек печати, расписание и много других возможностей.\n'
'Так же есть <a href="https://vk.me/profcomff_print_bot">бот для печати ВКонтакте</a>.')

val_fail = ('⚠️ Проверка не пройдена. Удостоверьтесь что вы состоите в профсоюзе и правильно ввели данные.\n\n'
'Введите фамилию и номер профсоюзного билета в формате:\n\nИванов\n1234567')
val_pass = '🥳 Поздравляю! Проверка пройдена и данные сохранены для этого телеграм-аккаунта. Можете присылать pdf.'
val_need = ('👤 Для использования принтера необходимо авторизоваться.\n'
'Отправьте фамилию и номер профсоюзного билета в формате:\n\nИванов\n1234567')
val_update_fail = ('Сообщение не распознано.\nЧтобы открыть инструкцию введите: /help\n'
'Для того чтобы обновить данные авторизации введите фамилию и номер'
'профсоюзного билета в формате:\n\nИванов\n1234567')
val_update_pass = '🥳 Поздравляю! Проверка пройдена и данные обновлены.'
val_addition = '\n\nНо для начала нужно авторизоваться. Нажмите на кнопку ниже:'
val_info = ('Вы авторизованы!\n'
'Ваш id в телеграм: <code>{}</code>\n'
'Фамилия: <code>{}</code>\n'
'Номер профсоюзного билета: <code>{}</code>')
unknown_command = ('Неизвестная команда.\n'
'У бота лишь три команды: /start /help /auth')
only_pdf = 'Документы на печать принимаются только в формате PDF'
doc_not_accepted = ('⚠️ Документ не принят, сначала авторизуйтесь.\n'
'Отправьте фамилию и номер профсоюзного билета в формате:\n\nИванов\n1234567')
file_size_error = ('⚠️ Принимаются только файлы размером меньше 3 MB.\n'
'Файл <b>{}</b> не принят.')
send_to_print = ('✅ Файл <b>{}</b> успешно загружен. Для печати подойдите к принтеру и введите PIN:\n\n'
'<b>{}</b>\n\n'
'Для быстрой печати отсканируйте QR код на экране принтера.')
qr_print = '{}{}'
settings_warning = 'Настройки сохраняются автоматически.'
settings_change_fail = 'Что-то сломалось, настройки печати не изменены, попробуйте через пару минут.'
unknown_keyboard_payload = 'Видимо бот обновился, выполните команду /start'
im_broken = 'Глубоко внутри меня что-то сломалось...\nПопробуйте через пару минут.'
download_error = 'Ошибка получения файла, попробуйте позже.'
print_err = '😵 Ошибка сервера печати. Попробуйте позже.'
db_err = '😵 Ошибка базы данных. Попробуйте ещё раз, если не получилось, то попробуйте позже.'
err_message_type = 'Сообщение не распознано.\nЧтобы открыть инструкцию введите: /help'
10 changes: 8 additions & 2 deletions src/errors_solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,13 @@
from telegram.error import TelegramError
from telegram.ext import ContextTypes

from src.answers import ans
from src.answers import Answers

ans = Answers()


async def native_error_handler(update: object, context: ContextTypes.DEFAULT_TYPE):
pass


def errors_solver(func):
Expand All @@ -28,7 +34,7 @@ async def wrapper(update: Update, context: ContextTypes.DEFAULT_TYPE):
except (SQLAlchemyError, psycopg2.Error) as err:
logging.error(err)
traceback.print_tb(err.__traceback__)
await context.bot.send_message(chat_id=update.message.chat.id, text=ans["db_err"])
await context.bot.send_message(chat_id=update.message.chat.id, text=ans.db_err)
except Exception as err:
logging.error(err)
traceback.print_tb(err.__traceback__)
Expand Down
Loading

0 comments on commit 134113e

Please sign in to comment.