from hikkatl.types import Message, PeerUser, PeerChat, PeerChannel import hikkatl.utils as TelethonUtils from .. import loader, utils """ ███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████ ████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████ PinMoreChats 📜 Licensed under the GNU AGPLv3 """ # meta desc: desc # meta developer: @BruhHikkaModules @loader.tds class PinMoreChats(loader.Module): async def client_ready(self, db, client): self.db = db self._chats = self.pointer("chats", []) strings = { "name": "PinMoreChats", "_cls_doc": " - Allows you to bookmark more than 5 or 10 chats (WARNING! IT DOES NOT PIN CHATS IN TELEGRAM, IT JUST MAKES A LIST OF YOUR CHATS ANCHORED BY THIS MODULE, REMINDER, USERBOT CAN NO MORE THAN YOU CAN)", "added": " Added chat {} {} ", "aleardy_in": " ‼️ This chat is already in the pinned", "aleardy_not_in": " ‼️ This chat is not in the pinned", "deleted": " ⚠️ Chat removed from pinned", "pinned": "Pinned chats:\n\n", } strings_ru = { "_cls_doc": "Позволяет закрепить больше чем 5 или 10 чатов (ПРЕДУПРЕЖДЕНИЕ! ОНО НЕ ЗАКРЕПЛЯЕТ ЧАТЫ В ТЕЛЕГРАММЕ, А ПРОСТО ДЕЛАЕТ СПИСОК ИЗ ВАШИХ ЧАТОВ ЗАКРЕПЛЁННЫМ ЭТИМ МОДУЛЕМ, НАПОМИНАЮ, ЮЗЕРБОТ МОЖЕТ НЕ БОЛЬШЕ ЧЕМ ВЫ<)", "added": " Добавлен чат {} {} ", "aleardy_in": " ‼️ Этот чат уже есть в закрепленных", "aleardy_not_in": " ‼️ Этого чата нет в закрепленных", "deleted": " ⚠️ Чат удалён из закреплённых", "pinned": "Закреплённые чаты:\n\n", } @loader.command( ru_doc=" - Добавить чат в закреплённых", ) async def pinchat(self, message: Message): """- Add chat to pinned""" peer = TelethonUtils.get_peer(message.peer_id) added = "maybe error in code, but i dont care" if message.chat_id in self._chats: await utils.answer(message, self.strings("aleardy_in")) return self._chats.append(message.chat_id) entity = await self.client.get_entity(message.chat_id) if isinstance(peer, PeerUser): added = self.strings("added").format(message.chat_id, entity.first_name) elif isinstance(peer, PeerChat) or isinstance(peer, PeerChannel): added = self.strings("added").format(message.chat_id, entity.title) await utils.answer(message, added) @loader.command(ru_doc=" - Удалить чат из закреплённых") async def unpinchat(self, message): """- Remove chat from pinned""" if message.chat_id not in self._chats: await utils.answer(message, self.strings("aleardy_not_in")) return self._chats.remove(message.chat_id) await utils.answer(message, self.strings("deleted")) @loader.command(ru_doc=" - Посмотреть закреплённые чаты") async def listpinchats(self, message): """- View pinned chats""" name = "" chats = "" for chat in self._chats: peer = TelethonUtils.get_peer(chat) chat_id = "" try: entity = await self.client.get_entity(int(chat)) except ValueError: name = "Чат не найден" try: chat_id = chat.replace( -100, ) except Exception: pass # просто если нету -100 то и не надо try: if isinstance(peer, PeerUser): name = entity.first_name elif isinstance(peer, PeerChat): name = entity.title elif isinstance(peer, PeerChannel): name = entity.title else: name = entity.title except Exception: pass messages = await self.client.get_messages(chat_id, limit=1) max_message_id = messages[0].id chats += f"{name}\n" await utils.answer( message, self.strings("pinned") + chats ) # Почему через плюс? Потому что f-string ругается SyntaxError: f-string: unmatched '(' @loader.command(ru_doc=" - FAQ по модулю") async def pmcfaq(self, message): """- FAQ for module"""