diff --git a/TelegramBot/bot.py b/TelegramBot/bot.py index 489b9da..df81bd1 100644 --- a/TelegramBot/bot.py +++ b/TelegramBot/bot.py @@ -108,11 +108,11 @@ def start(update: Update, context: CallbackContext): student_token = context.args[0] if len(context.args) > 0 else None if student_token is None: - update.message.reply_markdown_v2(text=MESSAGES.auth.NO_AUTH) + update.message.reply_markdown_v2(text=MESSAGES.Auth.NO_AUTH) return # Длинная операция, сообщим о запущенном процессе. - update.message.reply_text(text=MESSAGES.auth.START) + update.message.reply_text(text=MESSAGES.Auth.START) LOG.info(f"Authenticanting {user_id}") @@ -124,18 +124,18 @@ def start(update: Update, context: CallbackContext): data = req.json() except requests.exceptions.RequestException: LOG.exception("@{username} вызвал: Ошибка подключения к сервису Spreadsheets.") - update.message.reply_sticker(MESSAGES.stickers.DEAD) + update.message.reply_sticker(MESSAGES.Stickers.DEAD) return if req.status_code != 200: LOG.error(f"Ошибка авторизации, у пользователя @{username} {data}") err = data.get("error", "") - update.message.reply_text(text=MESSAGES.auth.failure(err)) - update.message.reply_sticker(MESSAGES.stickers.DEAD) + update.message.reply_text(text=MESSAGES.Auth.failure(err)) + update.message.reply_sticker(MESSAGES.Stickers.DEAD) return update.message.reply_text( - text=MESSAGES.auth.hello(data["student"]), + text=MESSAGES.Auth.hello(data["student"]), ) @@ -146,21 +146,21 @@ def grades(update: Update, context: CallbackContext): start = time.monotonic() # Длинная операция, сообщим о запущенном процессе. - look_msg = update.message.reply_html(MESSAGES.score.START) + look_msg = update.message.reply_html(MESSAGES.Score.START) try: data = requests.get(f"{HOST}/grades", params={"tg_id": user_id}).json() score = data["score"] grade = data["grade"] n_of_assignments = len(data["assignments"]) - score_message = MESSAGES.score.get(grade, score, n_of_assignments) + score_message = MESSAGES.Score.get(grade, score, n_of_assignments) update.message.reply_html(score_message) - update.message.reply_sticker(MESSAGES.stickers.bad()) + update.message.reply_sticker(MESSAGES.Stickers.bad()) except: LOG.exception("Failed to get grades.") - update.message.reply_sticker(MESSAGES.stickers.DEAD) + update.message.reply_sticker(MESSAGES.Stickers.DEAD) diff = time.monotonic() - start - look_msg.edit_text(MESSAGES.score.timeit(diff)) + look_msg.edit_text(MESSAGES.Score.timeit(diff)) def echo(update: Update, context: CallbackContext): diff --git a/TelegramBot/messages/messages.py b/TelegramBot/messages/messages.py index b327ad3..48b23bd 100644 --- a/TelegramBot/messages/messages.py +++ b/TelegramBot/messages/messages.py @@ -3,15 +3,17 @@ import random class Messages: class Auth: - def __init__(self): - self.NO_AUTH = "[Правила авторизации](https://github.com/Faridik/Carolyn/wiki/%F0%9F%A6%B8%E2%80%8D%E2%99%82%EF%B8%8F-%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F)" - self.START = "🔑 Авторизация..." - self.NO_ACCESS = "⛔ Нет доступа" + NO_AUTH = "[Правила авторизации](https://github.com/Faridik/Carolyn/wiki/%F0%9F%A6%B8%E2%80%8D%E2%99%82%EF%B8%8F-%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F)" + START = "🔑 Авторизация..." + NO_ACCESS = "⛔ Нет доступа" - def hello(self, data): - return f"Привет, {data['name']} 👋" + @staticmethod + def hello(data): + name = data.get("name", "студент") + return f"Привет, {name} 👋" - def failure(self, err: str): + @staticmethod + def failure(err: str): cases = { "StudentNotFound": "⛔ Ссылка больше не работает", "StudentAlreadyAuthed": "⛔ Регистрация по этой ссылке уже прошла", @@ -19,16 +21,11 @@ class Messages: } return cases.get(err, "😟 Возникли неполадки") - def success_log(self, data): - return f"✅ AUTH: {data['name']} " - - def failure_log(self, data): - return f"🟥 AUTH: {data['desc']}" - class Score: START = "👀 Посмотрим (~3с) ..." - def get(self, grade, score, n_of_assignments): + @staticmethod + def get(grade, score, n_of_assignments): summary = ( f"Ранг: {score:.2f} {n_of_assignments} зад.\n" + f"Оценка: {grade:.2f}" @@ -40,42 +37,69 @@ class Messages: return f"⏱ Посмотрели за {t:.2f}с" class Spreadsheets: - def __init__(self): - self.DEAD = "⚰ Сервис «таблицы» недоступен" + pass class Stickers: - def __init__(self): - # Воробей павлик с колокольчиком и надписью "позор" - self.POZOR = "CAACAgIAAxkBAAEm1RhhBZg-2D6NypUeTsnbToD8_LMFTAACuUcAAulVBRjfnofQTkeMnCAE" - # кот Сима в петле плачет и показывает палец вверх - self.ROPE = "CAACAgIAAxkBAAEm1SFhBZjLaZgFIkvyxfBmAplwUWQFwwACBS0AAulVBRiIaSQ42WLoyyAE" - # Акио смотрит на брокколи - self.BROCCOLI = "CAACAgIAAxkBAAEm1SVhBZkd24Dy2B_wYSCi6UrNuUjgwQACEUkAAulVBRiykDzrzywbmiAE" - # Ян показывает палец вниз - self.THUMB_DOWN = "CAACAgIAAxkBAAEm1SthBZlcos0_TbJo8W7mAcqGLNAh2wACJ5cAAp7OCwABDddMclD7Tf8gBA" - # Тигр закатывает глаза - self.EYES_UP = "CAACAgEAAxkBAAEm1TBhBZmIZTrwzhGSzC47rNFbewQe6QAC4gADOA6CEeTgk4YIcTeWIAQ" - # Нутри большими глазами и надписью "пипец" - self.PPTS = "CAACAgIAAxkBAAEm1TZhBZnNVwLXmrbZwvdGjxiSwefzDAACn0sAAulVBRhECmBPSGCXHSAE" - # Попугай Кент с недовольной мордахой - self.GRUMPY_KENT = "CAACAgIAAxkBAAEm1UBhBZn1gXmRfxaK_RqFTj1aFxLY-gACy0EAAulVBRhgQdlH2rd0uyAE" - # wojak - self.WOJAK = "CAACAgIAAxkBAAEm1UJhBZpfHNYVT_ZLrxUpyi8qRLWJGgACPAADB7lDCi2YrzAEyxJeIAQ" - # Лэтишный котик и надпись "ОЙ" - self.OOPS = "CAACAgIAAxkBAAEm1URhBZp2li7w2E1M6PirG7UnqLOc2QACSxEAAlTE4UoR1Olz8RANZCAE" - # Мем "оп ахах неловко вышло" - self.NELOVKO = "CAACAgIAAxkBAAEm1UZhBZqZ94SFa1e6d-Zy5I-6_SC_fQACgwgAAh8MqEiLbHl9nugoYSAE" - # Попугай смотрит в зеркало "посмотри что с тобой стало" - self.MIRROR = "CAACAgIAAxkBAAEm1VFhBZudma_FmFhybGgXikz3csc0BQAC2UEAAulVBRgkdje995ir7iAE" - # Попугай с сигаретой - self.CIG = "CAACAgIAAxkBAAEm1VZhBZv6p7GsHS6wcyt2mCXoHJCo-wAC0UEAAulVBRghLLSQAcU6rSAE" - # Попугай и песок - self.SAND = "CAACAgIAAxkBAAEm1VhhBZwbw83_UVS8A5Crsf3EVAABvWIAAshBAALpVQUYl51K7ci-ClIgBA" - # Акио падает в обморок - self.PANIC = "CAACAgIAAxkBAAEm1VxhBZxwqRUJmVXDtzmsPJUIIGJgegACB0kAAulVBRiMI-hzK3GcKiAE" - # Эникей надпись "умер" - self.DEAD = "CAACAgIAAxkBAAEm1aRhBaWXRb_tcI03O1onx0jW0bHmuAACejcAAulVBRi1oSUXeBATmiAE" + # Воробей павлик с колокольчиком и надписью "позор" + POZOR = ( + "CAACAgIAAxkBAAEm1RhhBZg-2D6NypUeTsnbToD8_LMFTAACuUcAAulVBRjfnofQTkeMnCAE" + ) + # кот Сима в петле плачет и показывает палец вверх + ROPE = ( + "CAACAgIAAxkBAAEm1SFhBZjLaZgFIkvyxfBmAplwUWQFwwACBS0AAulVBRiIaSQ42WLoyyAE" + ) + # Акио смотрит на брокколи + BROCCOLI = ( + "CAACAgIAAxkBAAEm1SVhBZkd24Dy2B_wYSCi6UrNuUjgwQACEUkAAulVBRiykDzrzywbmiAE" + ) + # Ян показывает палец вниз + THUMB_DOWN = ( + "CAACAgIAAxkBAAEm1SthBZlcos0_TbJo8W7mAcqGLNAh2wACJ5cAAp7OCwABDddMclD7Tf8gBA" + ) + # Тигр закатывает глаза + EYES_UP = ( + "CAACAgEAAxkBAAEm1TBhBZmIZTrwzhGSzC47rNFbewQe6QAC4gADOA6CEeTgk4YIcTeWIAQ" + ) + # Нутри большими глазами и надписью "пипец" + PPTS = ( + "CAACAgIAAxkBAAEm1TZhBZnNVwLXmrbZwvdGjxiSwefzDAACn0sAAulVBRhECmBPSGCXHSAE" + ) + # Попугай Кент с недовольной мордахой + GRUMPY_KENT = ( + "CAACAgIAAxkBAAEm1UBhBZn1gXmRfxaK_RqFTj1aFxLY-gACy0EAAulVBRhgQdlH2rd0uyAE" + ) + # wojak + WOJAK = ( + "CAACAgIAAxkBAAEm1UJhBZpfHNYVT_ZLrxUpyi8qRLWJGgACPAADB7lDCi2YrzAEyxJeIAQ" + ) + # Лэтишный котик и надпись "ОЙ" + OOPS = ( + "CAACAgIAAxkBAAEm1URhBZp2li7w2E1M6PirG7UnqLOc2QACSxEAAlTE4UoR1Olz8RANZCAE" + ) + # Мем "оп ахах неловко вышло" + NELOVKO = ( + "CAACAgIAAxkBAAEm1UZhBZqZ94SFa1e6d-Zy5I-6_SC_fQACgwgAAh8MqEiLbHl9nugoYSAE" + ) + # Попугай смотрит в зеркало "посмотри что с тобой стало" + MIRROR = ( + "CAACAgIAAxkBAAEm1VFhBZudma_FmFhybGgXikz3csc0BQAC2UEAAulVBRgkdje995ir7iAE" + ) + # Попугай с сигаретой + CIG = "CAACAgIAAxkBAAEm1VZhBZv6p7GsHS6wcyt2mCXoHJCo-wAC0UEAAulVBRghLLSQAcU6rSAE" + # Попугай и песок + SAND = ( + "CAACAgIAAxkBAAEm1VhhBZwbw83_UVS8A5Crsf3EVAABvWIAAshBAALpVQUYl51K7ci-ClIgBA" + ) + # Акио падает в обморок + PANIC = ( + "CAACAgIAAxkBAAEm1VxhBZxwqRUJmVXDtzmsPJUIIGJgegACB0kAAulVBRiMI-hzK3GcKiAE" + ) + # Эникей надпись "умер" + DEAD = ( + "CAACAgIAAxkBAAEm1aRhBaWXRb_tcI03O1onx0jW0bHmuAACejcAAulVBRi1oSUXeBATmiAE" + ) + @classmethod def bad(self): """Возвращает стикер с грустным смыслом.""" return random.choice( @@ -96,9 +120,3 @@ class Messages: self.PANIC, ] ) - - def __init__(self): - self.auth = self.Auth() - self.score = self.Score() - self.spreadsheets = self.Spreadsheets() - self.stickers = self.Stickers()