Spaces:
Build error
Build error
| import asyncio | |
| import logging | |
| import os | |
| from aiogram import Bot, Dispatcher, types, F | |
| from aiogram.filters import Command | |
| from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton, CallbackQuery | |
| from aiogram.client.session.aiohttp import AiohttpSession | |
| from aiogram.client.telegram import TelegramAPIServer | |
| from playwright.async_api import async_playwright | |
| # --- КОНФИГУРАЦИЯ --- | |
| BOT_TOKEN = "8591857705:AAFblmp75bZ7qqAwKze67sSNewt6RLXd0M0" | |
| EMAIL = "smilerugm@gmail.com" | |
| PASSWORD = "5dFtxSxQWvFg7_T" | |
| PANEL_URL = "https://panel.cloudblaze.org/server/b06be851" | |
| logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s") | |
| logger = logging.getLogger(__name__) | |
| # Настройка сессии для обхода блокировок DNS | |
| # Мы используем кастомный сервер, если основной недоступен | |
| session = AiohttpSession() | |
| bot = Bot(token=BOT_TOKEN, session=session) | |
| dp = Dispatcher() | |
| class SuperLightAutomator: | |
| async def run_action(self, action_name: str): | |
| async with async_playwright() as p: | |
| browser = None | |
| try: | |
| logger.info(f"Запуск браузера для: {action_name}") | |
| browser = await p.chromium.launch( | |
| headless=True, | |
| args=['--no-sandbox', '--disable-dev-shm-usage', '--single-process'] | |
| ) | |
| context = await browser.new_context( | |
| user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" | |
| ) | |
| page = await context.new_page() | |
| # Блокировка тяжелого контента | |
| await page.route("**/*", lambda route: | |
| route.abort() if route.request.resource_type in ["image", "media", "font", "stylesheet"] | |
| else route.continue_() | |
| ) | |
| await page.goto(PANEL_URL, timeout=60000, wait_until="domcontentloaded") | |
| if await page.query_selector('input[name="username"]'): | |
| await page.fill('input[name="username"]', EMAIL) | |
| await page.fill('input[name="password"]', PASSWORD) | |
| await page.click('button[type="submit"]') | |
| await page.wait_for_url(PANEL_URL, timeout=30000) | |
| logger.info(f"Нажимаю кнопку: {action_name}") | |
| button = page.get_by_role("button", name=action_name, exact=False) | |
| await button.wait_for(state="visible", timeout=15000) | |
| await button.click() | |
| await asyncio.sleep(5) | |
| return f"✅ Команда **{action_name}** отправлена!" | |
| except Exception as e: | |
| logger.error(f"Ошибка: {e}") | |
| return f"❌ Ошибка: {str(e)[:100]}" | |
| finally: | |
| if browser: | |
| await browser.close() | |
| def main_kb(): | |
| return InlineKeyboardMarkup(inline_keyboard=[ | |
| [InlineKeyboardButton(text="▶️ Запуск", callback_data="srv_Start"), | |
| InlineKeyboardButton(text="🔄 Рестарт", callback_data="srv_Restart")], | |
| [InlineKeyboardButton(text="🛑 Стоп", callback_data="srv_Stop")] | |
| ]) | |
| async def cmd_start(message: types.Message): | |
| await message.answer("🎮 **AzureHouse Control**", reply_markup=main_kb(), parse_mode="Markdown") | |
| async def handle_srv(callback: CallbackQuery): | |
| action = callback.data.split("_")[1] | |
| await callback.message.edit_text(f"⏳ Выполняю: **{action}**...", parse_mode="Markdown") | |
| result = await SuperLightAutomator().run_action(action) | |
| await callback.message.edit_text(f"{result}\n\nВыбери действие:", reply_markup=main_kb(), parse_mode="Markdown") | |
| await callback.answer() | |
| async def keep_alive(): | |
| while True: | |
| await asyncio.sleep(1200) | |
| logger.info("Keep-alive: бот активен") | |
| async def main(): | |
| logger.info("Проверка связи с Telegram...") | |
| try: | |
| me = await bot.get_me() | |
| logger.info(f"Связь установлена! Бот: @{me.username}") | |
| except Exception as e: | |
| logger.error(f"Не удалось подключиться к Telegram: {e}") | |
| return | |
| await asyncio.gather(dp.start_polling(bot), keep_alive()) | |
| if __name__ == "__main__": | |
| asyncio.run(main()) |