Сделал методы сообщений статичными и убрал init

This commit is contained in:
serafim.urukov 2021-08-10 23:54:22 +03:00
parent 471cf43f60
commit f285fb1350
2 changed files with 82 additions and 64 deletions

View File

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

View File

@ -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"Ранг: <b>{score:.2f}</b> {n_of_assignments} зад.\n"
+ f"Оценка: <b>{grade:.2f}</b>"
@ -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()