From 043ba6c127c0b9cb3550389f20f88d4cae339dd7 Mon Sep 17 00:00:00 2001 From: Faridik Date: Mon, 13 Sep 2021 21:55:30 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D1=83=20=D0=BE?= =?UTF-8?q?=D1=88=D0=B8=D0=B1=D0=BE=D0=BA=20=D0=B2=20/grades?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TelegramBot/bot.py | 13 ++++++++++++- TelegramBot/messages/messages.py | 8 ++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/TelegramBot/bot.py b/TelegramBot/bot.py index 8758a53..42c7b4f 100644 --- a/TelegramBot/bot.py +++ b/TelegramBot/bot.py @@ -90,18 +90,29 @@ def grades_start(update: Update, context: CallbackContext): Обновляет текст сообщения и дает клавиатуру с выбором дисциплины. """ user_id = update.message.from_user.id + username = update.message.from_user.username start = time.monotonic() # Длинная операция, сообщим о запущенном процессе. look_msg = update.message.reply_html(MESSAGES.Assignments.START) try: - data = requests.get(f"{HOST}/grades", params={"tg_id": user_id}).json() + req = requests.get(f"{HOST}/grades", params={"tg_id": user_id}) + data = req.json() except: LOG.exception("Failed to get grades.") update.message.reply_sticker(MESSAGES.Stickers.DEAD) return ConversationHandler.END + if req.status_code != 200: + LOG.error(f"Ошибка получения оценок у пользователя @{username} {data}") + err = data.get("error", "") + update.message.reply_text(text=MESSAGES.Assignments.failure(err)) + diff = time.monotonic() - start + look_msg.edit_text(MESSAGES.Assignments.timeit(diff)) + update.message.reply_sticker(MESSAGES.Stickers.bad()) + return + # При инициализации бота словарь отсутствует if "fingerprints" not in context.bot_data: context.bot_data["fingerprints"] = defaultdict(str) diff --git a/TelegramBot/messages/messages.py b/TelegramBot/messages/messages.py index ecdfdbe..4e8bd9f 100644 --- a/TelegramBot/messages/messages.py +++ b/TelegramBot/messages/messages.py @@ -58,6 +58,14 @@ class Messages: def timeit(t: float): return f"⏱ Посмотрели за {t:.2f}с" + @staticmethod + def failure(err: str): + cases = { + "StudentNotFound": "⛔ Для получения оценок нужно зарегистрироваться." + + "Команда /start поможет с регистрацией", + } + return cases.get(err, "😟 Возникли неполадки") + class Sub: START = "📜✍ Оформляю подписку на уведомления..." SUBBED = "👌 Подписка на уведомления оформлена"