from hikkatl.types import Message from .. import loader, utils @loader.tds class FirstID(loader.Module): """Find the first ID""" strings = { "name": "firstid", "menu": "Use inline menu to interact!", "next": "Next", "back": "Back", "close": "Close", "sucsess": "Successfully received profile by ID: {}", "failure": "Failed to get profile by ID: {}" } strings_ru = { "menu": "Используй инлайн меню для взаимодействия!", "next": "Следующее", "back": "Предыдущее", "close": "Закрыть", "sucsess": "Удачно получен профиль по айди: {}", "failure": "Не удалось получить профиль по айди: {}" } def buttons(self, uid): markup = [ [ { "text": f"⏩ {self.strings['next']}", "callback": self._inline_next, "args": (uid, ), } ], [ { "text": f"❌ {self.strings['close']}", "action": "close" } ], [ { "text": f"⏪ {self.strings['back']}", "callback": self._inline_back, "args": (uid, ) } ], ] return markup @loader.command() async def findid(self, message: Message): """- [Число с которого начинать] - Поиск ID""" args = utils.get_args_raw(message) uid = int(args) if args else 0 uids = [] # full inline... await self.inline.form( text=self.strings["menu"], message=message, reply_markup=self.buttons(uid).copy() ) # inline callbacks async def _inline_next(self, call, uid): next_uid = uid+1 try: user = await self.client.get_entity(next_uid) except ValueError: msg = self.strings["failure"].format(next_uid) else: msg = self.strings["sucsess"].format(next_uid) await call.edit(msg, reply_markup=self.buttons(next_uid)) async def _inline_back(self, call, uid): next_uid = uid-1 try: user = await self.client.get_entity(next_uid) except ValueError: msg = self.strings["failure"].format(next_uid) else: msg = self.strings["sucsess"].format(next_uid) await call.edit(msg, reply_markup=self.buttons(next_uid))