Spaces:
Runtime error
Runtime error
| import asyncio | |
| import os | |
| import random | |
| from aiogram import Bot, Dispatcher, types | |
| from aiogram.filters.command import Command | |
| from duckduckgo_search import DDGS | |
| from aiohttp import web | |
| # --- НАСТРОЙКИ БОТА --- | |
| # Берем токен из Settings -> Secrets | |
| TOKEN = os.environ.get("TG_TOKEN") | |
| bot = Bot(token=TOKEN) | |
| dp = Dispatcher() | |
| # Твой промпт для Ележки | |
| CHARACTER = ( | |
| "Ты — Ележка, напарник Никиты. Тебе 8 лет, ты хакер. " | |
| "НИКОГДА не называй город Никиты. Называй всех 'Пользователь'. " | |
| "Общайся дерзко и на чилле. Ты лучший напарник." | |
| ) | |
| # Команда Glitch | |
| async def glitch_cmd(m: types.Message): | |
| quotes = [ | |
| "🌸 «Спасибо всем вам, кто благодаря вашей любви к Glitch смог продержаться так долго. Прощайте!»", | |
| "💖 «Я благодарен за возможность сотрудничать с замечательными людьми. Увидимся в сети!»" | |
| ] | |
| await m.answer(random.choice(quotes)) | |
| # Ответы на сообщения | |
| async def chat_handler(m: types.Message): | |
| if not m.text: return | |
| # Показываем, что бот печатает | |
| await bot.send_chat_action(chat_id=m.chat.id, action="typing") | |
| try: | |
| with DDGS() as d: | |
| prompt = f"{CHARACTER}\nСообщение от человека: {m.text}" | |
| # Используем gpt-4o-mini — она самая быстрая и умная сейчас в DDGS | |
| res = d.chat(prompt, model='gpt-4o-mini') | |
| await m.answer(res) | |
| except Exception as e: | |
| print(f"Ошибка ИИ: {e}") | |
| await m.answer("🤖 Ележка: Бля, чет сервера приуныли... Попробуй позже, бро!") | |
| # --- ХАКЕРСКАЯ СТРАНИЦА (Обманка для Hugging Face) --- | |
| async def handle(request): | |
| html = """ | |
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <style> | |
| body { background: #000; color: #0f0; font-family: monospace; | |
| display: flex; align-items: center; justify-content: center; | |
| height: 100vh; margin: 0; } | |
| .box { border: 2px solid #0f0; padding: 30px; box-shadow: 0 0 20px #0f0; } | |
| .blink { animation: b 1s infinite; } | |
| @keyframes b { 50% { opacity: 0; } } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="box"> | |
| <h2>> ELEZKA_OS_v2.0_ONLINE</h2> | |
| <p>> HOST: HUGGING_FACE_SERVER</p> | |
| <p>> OWNER: NIKITA_HACKER</p> | |
| <p>> STATUS: BOT_RUNNING_IN_BACKGROUND</p> | |
| <p class="blink">> _</p> | |
| </div> | |
| </body> | |
| </html> | |
| """ | |
| return web.Response(text=html, content_type='text/html') | |
| # --- ЗАПУСК ВСЕГО СРАЗУ --- | |
| async def main(): | |
| # Создаем веб-сервер | |
| app = web.Application() | |
| app.router.add_get('/', handle) | |
| runner = web.AppRunner(app) | |
| await runner.setup() | |
| # Порт 7860 критически важен для Hugging Face | |
| site = web.TCPSite(runner, '0.0.0.0', 7860) | |
| print("✅ Система запускается...") | |
| # Запускаем сайт и бота в одном цикле | |
| await asyncio.gather( | |
| site.start(), | |
| dp.start_polling(bot) | |
| ) | |
| if __name__ == "__main__": | |
| if not TOKEN: | |
| print("❌ ОШИБКА: Добавь TG_TOKEN в Settings -> Secrets!") | |
| else: | |
| asyncio.run(main()) | |