# █▀▀ ▄▀█   █▀▄▀█ █▀█ █▀▄ █▀ # █▀░ █▀█   █░▀░█ █▄█ █▄▀ ▄█ # https://t.me/famods # 🔒 Licensed under the GNU AGPLv3 # 🌐 https://www.gnu.org/licenses/agpl-3.0.html # --------------------------------------------------------------------------------- # Name: Fabrika # Description: Авто-фарм в @fabrika # meta developer: @FAmods # meta banner: https://github.com/FajoX1/FAmods/blob/main/assets/banners/fabrika.png?raw=true # --------------------------------------------------------------------------------- import hikkatl import random import asyncio import logging from .. import loader, utils logger = logging.getLogger(__name__) @loader.tds class Fabrika(loader.Module): """Авто-фарм в @fabrika""" strings = { "name": "Fabrika", "checking_profile": "👀 Смотрю профиль...", "searching_team": "👀 Поиск команды...", "searching_id": "👀 Поиск пользователя...", "no_usid": "🚫 Нужно {}{} [айди]", "no_found_us": "🚫 Пользователь не найден!", "rw_on": "⚡️ Отправка рабочих включена!", "rw_off": "🚫 Отправка рабочих выключена!", "team_on": "⚡️ Командная работа включена!", "team_off": "🚫 Командная работа выключена!", "bonus_on": "🎁 Авто-бонус включен!", "bonus_off": "🚫 Авто-бонус выключен!", } async def client_ready(self, client, db): self.db = db self._client = client if self.db.get(self.name, "slaves_w", False): asyncio.create_task(self._slavesw()) if self.db.get(self.name, "team", False): asyncio.create_task(self._teamw()) async def _slavesw(self): while True: try: async with self._client.conversation("@fabrika") as conv: msg = await conv.send_message("/factory") r = await conv.get_response() await r.click(1) r = await conv.get_edit() await r.click(0) await r.delete() await msg.delete() break except hikkatl.errors.common.AlreadyInConversationError: await asyncio.sleep(5.67) async def _teamw(self): while True: try: async with self._client.conversation("@fabrika") as conv: msg = await conv.send_message("/start") r = await conv.get_response() await r.click(5) r = await conv.get_edit() await asyncio.sleep(2.61) await r.click(3) r = await conv.get_edit() await asyncio.sleep(3.61) await r.click(0) await r.delete() await msg.delete() break except hikkatl.errors.common.AlreadyInConversationError: await asyncio.sleep(5.67) async def _takebonus(self): while True: try: async with self._client.conversation("@fabrika") as conv: msg = await conv.send_message("/city") r = await conv.get_response() await r.click(1) r = await conv.get_edit() await r.click(0) await r.delete() await msg.delete() break except hikkatl.errors.common.AlreadyInConversationError: await asyncio.sleep(5.67) async def _getidfb(self, query): while True: try: async with self._client.conversation("@fabrika") as conv: msg = await conv.send_message("/market") r = await conv.get_response() await r.click(0) msg = await conv.send_message(query) r = await conv.get_response() await msg.delete() await r.delete() await msg.delete() if r.text != "Пользователь не найден": return f"📁 {r.text}\n\n🔗 Ссылка" return f"🚫 {r.text}" except hikkatl.errors.common.AlreadyInConversationError: await asyncio.sleep(5.67) async def _getteamfb(self, query): while True: try: async with self._client.conversation("@fabrika") as conv: msg = await conv.send_message(f"/start team_{query}") r = await conv.get_response() await r.delete() await msg.delete() if r.text != "Команда не найдена" and r.text != "Неверный формат": return f"{r.text}\n\n🔗 Ссылка" return f"🚫 {r.text}" except hikkatl.errors.common.AlreadyInConversationError: await asyncio.sleep(5.67) async def _getprofme(self): while True: try: async with self._client.conversation("@fabrika") as conv: msg = await conv.send_message("/profile") r = await conv.get_response() await msg.delete() await r.delete() return f"📁 {r.text}\n\n🔗 Ссылка" except hikkatl.errors.common.AlreadyInConversationError: await asyncio.sleep(5.67) @loader.command() async def fbrw(self, message): """Включить/выключить автоматически давать работу работникам""" if self.db.get(self.name, "slaves_w", False): self.db.set(self.name, "slaves_w", False) return await utils.answer(message, self.strings["rw_off"]) self.db.set(self.name, "slaves_w", True) await utils.answer(message, self.strings["rw_on"]) await self._slavesw() @loader.command() async def fbbonus(self, message): """Включить/выключить автоматическое получать бонус""" if self.db.get(self.name, "autobonus", False): self.db.set(self.name, "autobonus", False) return await utils.answer(message, self.strings["bonus_off"]) self.db.set(self.name, "autobonus", True) await utils.answer(message, self.strings["bonus_on"]) await self._takebonus() @loader.command() async def fbteam(self, message): """Включить/выключить автоматически отправлятся на комадную работу""" if self.db.get(self.name, "team", False): self.db.set(self.name, "team", False) return await utils.answer(message, self.strings["team_off"]) self.db.set(self.name, "team", True) await utils.answer(message, self.strings["team_on"]) await self._teamw() @loader.command() async def sprof(self, message): """Посмотреть свой профиль""" await utils.answer(message, self.strings["checking_profile"]) await utils.answer(message, await self._getprofme()) @loader.command() async def sidtg(self, message): """Посмотреть профиль пользователя через айди в тг""" query = utils.get_args_raw(message) if not query: return await utils.answer(message, self.strings['no_usid'].format(self.get_prefix(), 'sidtg')) await utils.answer(message, self.strings["searching_id"]) try: q = await self._client.inline_query("@fabrika", f"sup_{query}") await utils.answer(message, f"📁 {q.result.results[0].send_message.message}\n\n🔗 Ссылка") except (IndexError, AttributeError): return await utils.answer(message, self.strings['no_found_us']) @loader.command() async def sidfb(self, message): """Посмотреть профиль пользователя через айди в боте""" query = utils.get_args_raw(message) if not query: return await utils.answer(message, self.strings['no_usid'].format(self.get_prefix(), 'sidfb')) await utils.answer(message, self.strings["searching_id"]) await utils.answer(message, await self._getidfb(query)) @loader.command() async def steamfb(self, message): """Посмотреть команду через айди""" query = utils.get_args_raw(message) if not query: return await utils.answer(message, self.strings['no_usid'].format(self.get_prefix(), 'steamfb')) await utils.answer(message, self.strings["searching_team"]) await utils.answer(message, await self._getteamfb(query)) @loader.loop(interval=60*60*24, autostart=True) async def loop(self): if self.db.get(self.name, "autobonus", False): await self._takebonus() await asyncio.sleep(random.randint(65, 90)) async def watcher(self, event): chat = utils.get_chat_id(event) if chat != 6520131495: return if all(keyword in event.raw_text for keyword in ["Ваши рабоч", "законч", "работу"]): if self.db.get(self.name, "slaves_w", False): await self._slavesw() if "Командная работа завершена!" in event.raw_text: if self.db.get(self.name, "team", False): await self._teamw()