File size: 3,759 Bytes
612be65
 
 
553dbc8
 
 
380a057
553dbc8
612be65
380a057
553dbc8
 
 
 
380a057
553dbc8
6dceb46
 
380a057
553dbc8
 
380a057
553dbc8
 
 
380a057
 
553dbc8
 
 
380a057
553dbc8
380a057
 
 
 
553dbc8
380a057
553dbc8
 
 
380a057
 
553dbc8
612be65
380a057
553dbc8
 
380a057
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
612be65
380a057
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
553dbc8
 
380a057
 
 
 
612be65
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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
@dp.message(Command("Glitch"))
async def glitch_cmd(m: types.Message):
    quotes = [
        "🌸 «Спасибо всем вам, кто благодаря вашей любви к Glitch смог продержаться так долго. Прощайте!»",
        "💖 «Я благодарен за возможность сотрудничать с замечательными людьми. Увидимся в сети!»"
    ]
    await m.answer(random.choice(quotes))

# Ответы на сообщения
@dp.message()
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())