diff --git a/classes/holo_user.py b/classes/holo_user.py index 7e423dd..b75d5e4 100644 --- a/classes/holo_user.py +++ b/classes/holo_user.py @@ -68,6 +68,11 @@ class UserInvalidError(Exception): self.user = user super().__init__(f"Could not find HoloUser by using {type(self.user)} as an input type") +class LabelTooLongError(Exception): + def __init__(self, label: str) -> None: + self.label = label + super().__init__(f"Could not set label to '{label}' because it is {len(label)} characters long (16 is maximum)") + class HoloUser(): """This object represents a user of HoloChecker bot. It is primarily used to interact with a database in a more python-friendly way, @@ -270,20 +275,22 @@ class HoloUser(): logWrite(f"Could not notify admin about failure when sending message! Admin has never interacted with bot!") await context.reply_text(locale("message_error", "message"), quote=should_quote(context)) - async def set_label(self, chat: Chat, label: str) -> None: + async def label_set(self, chat: Chat, label: str) -> None: """Set label in destination group ### Args: * chat (`Chat`): Telegram chat * label (`str`): Label you want to set """ + if len(label) > 16: + raise LabelTooLongError(label) self.label = label self.set("label", label) await app.promote_chat_member(configGet("destination_group"), self.id) if not await isAnAdmin(self.id): await app.set_administrator_title(configGet("destination_group"), self.id, label) - async def reset_label(self, chat: Chat) -> None: + async def label_reset(self, chat: Chat) -> None: """Reset label in destination group ### Args: diff --git a/modules/callbacks/sponsorship.py b/modules/callbacks/sponsorship.py index 43e6cca..76daf30 100644 --- a/modules/callbacks/sponsorship.py +++ b/modules/callbacks/sponsorship.py @@ -40,7 +40,7 @@ async def callback_query_sponsor_yes(app, clb): col_tmp.update_one({"user": {"$eq": holo_user.id}, "type": {"$eq": "sponsorship"}}, {"$set": {"state": "approved", "sent": False}}) - await holo_user.set_label(configGet("destination_group"), col_tmp.find_one({"user": {"$eq": holo_user.id}, "type": {"$eq": "sponsorship"}})["sponsorship"]["label"]) + await holo_user.label_set(configGet("destination_group"), col_tmp.find_one({"user": {"$eq": holo_user.id}, "type": {"$eq": "sponsorship"}})["sponsorship"]["label"]) edited_markup = [[InlineKeyboardButton(text=str(locale("accepted", "button")), callback_data="nothing")]] diff --git a/modules/commands/label.py b/modules/commands/label.py index d871b47..316cc30 100644 --- a/modules/commands/label.py +++ b/modules/commands/label.py @@ -21,14 +21,14 @@ async def cmd_label(app, msg): label = " ".join(msg.command[2:]) if label.lower() == "reset": - await target.reset_label(msg.chat) + await target.label_reset(msg.chat) await msg.reply_text(f"Resetting **{target.id}**'s label...", quote=should_quote(msg)) else: if len(label) > 16: await msg.reply_text(locale("label_too_long", "message")) return - await target.set_label(msg.chat, label) + await target.label_set(msg.chat, label) await msg.reply_text(f"Setting **{target.id}**'s label to **{label}**...", quote=should_quote(msg)) else: diff --git a/modules/scheduled.py b/modules/scheduled.py index 8eb63ec..ae73e04 100644 --- a/modules/scheduled.py +++ b/modules/scheduled.py @@ -61,7 +61,7 @@ if configGet("enabled", "scheduler", "sponsorships"): try: holo_user = HoloUser(entry["user"]) await app.send_message( entry["user"], locale("sponsorships_expired", "message") ) # type: ignore - await holo_user.reset_label(configGet("destination_group")) + await holo_user.label_reset(configGet("destination_group")) try: tg_user = await app.get_users(entry["user"]) logWrite(f"Notified user that sponsorship expires in {until_expiry} days")