Добавил обработку ошибок в /grades

This commit is contained in:
Faridik 2021-09-13 21:55:30 +00:00
parent 5aef4a741b
commit 043ba6c127
2 changed files with 20 additions and 1 deletions

View File

@ -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)

View File

@ -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 = "👌 Подписка на уведомления оформлена"