# █▀▀ ▄▀█   █▀▄▀█ █▀█ █▀▄ █▀ # █▀░ █▀█   █░▀░█ █▄█ █▄▀ ▄█ # https://t.me/famods # 🔒 Licensed under the GNU AGPLv3 # 🌐 https://www.gnu.org/licenses/agpl-3.0.html # --------------------------------------------------------------------------------- # Name: PhoneInfo # Description: Информация о телефоне # meta developer: @FAmods # meta banner: https://github.com/FajoX1/FAmods/blob/main/assets/banners/phoneinfo.png?raw=true # --------------------------------------------------------------------------------- import time import asyncio import logging from .. import loader, utils logger = logging.getLogger(__name__) @loader.tds class PhoneInfo(loader.Module): """Информация о телефоне""" strings = { "name": "PhoneInfo", "no_phone": " Нужно {}{} [название телефона]", "searching": "🔄 Поиск телефона...", "searching_info": "🔄 Поиск информации о телефоне...", "no_found": " Не нашёл такой телефон", "cameras_txt": "📷 Cameras:", "software_txt": "🖥 Software:", "hardware_txt": "💾 Hardware:", } cameras_t = "Cameras:" software_t = "Software:" hardware_t = "Hardware:" opt_bt = "\nspecs prepared with ❤️ by @gsmarbot" def __init__(self): self.config = loader.ModuleConfig( loader.ConfigValue( "search_limit", 5, lambda: "Лимит результатов в поиске", ), ) async def client_ready(self, client, db): self.db = db self._client = client async def _get_phone_info(self, query): try: q = await self._client.inline_query("@gsmarbot", query) result = q.result.results[1] message = result.send_message.message message = message.replace(self.opt_bt, "") message = message.replace(self.cameras_t, self.strings['cameras_txt']) message = message.replace(self.software_t, self.strings['software_txt']) message = message.replace(self.hardware_t, self.strings['hardware_txt']) url = result.send_message.reply_markup.rows[0].buttons[0].url return {'info': message, 'link': url} except (IndexError, AttributeError): return {'info': "no found"} async def _get_phones(self, query): try: q = await self._client.inline_query("@gsmarbot", query) q.result.results[1] results = q.result.results limit = self.config["search_limit"] c_res = 0 resultss = [] for result in results: if c_res == limit: break resultss.append({"name": result.send_message.message.split('\n')[0], "link": result.send_message.reply_markup.rows[0].buttons[0].url}) c_res += 1 return {'result': resultss, 'count_result_res': c_res} except (IndexError, AttributeError): return {"result": "no found"} @loader.command() async def pnsearch(self, message): """Поиск телефона""" query = utils.get_args_raw(message) if not query: return await utils.answer(message, self.strings['no_phone'].format(self.get_prefix(), 'pnsearch')) await utils.answer(message, self.strings['searching']) start_time = time.time() phones = await self._get_phones(query) if phones['result'] == "no found": return await utils.answer(message, self.strings['no_found']) txt = f""" 📱 Результаты поиска 🔎 Запрос: {query} """ for phone in phones['result']: txt += f"📱 {phone['name']}\n🔗 {phone['link']}\n\n" end_time = time.time() execution_time = end_time - start_time txt += f"{phones['count_result_res']} результатов за {execution_time} сек" return await utils.answer(message, txt) @loader.command() async def pninfo(self, message): """Получить информацию о телефоне""" query = utils.get_args_raw(message) if not query: return await utils.answer(message, self.strings['no_phone'].format(self.get_prefix(), 'pninfo')) await utils.answer(message, self.strings['searching_info']) info = await self._get_phone_info(query) if info['info'] == "no found": return await utils.answer(message, self.strings['no_found']) txt = f""" 📱 Информация о телефоне 🔎 Запрос: {query} 📲 {info['info']} """ keyboard = [ [ { "text": "Полная информация о телефоне", "url": info['link'], } ], ] # try: await self.inline.form( text=txt, message=message, reply_markup=keyboard, force_me=True, ) # except Exception as e: # txt += f"ℹ️ Полная информация о телефоне" # return await utils.answer(message, txt)