FreshPixels commited on
Commit
60279a3
·
verified ·
1 Parent(s): c62077e

Delete test_server.py

Browse files
Files changed (1) hide show
  1. test_server.py +0 -119
test_server.py DELETED
@@ -1,119 +0,0 @@
1
- import sys
2
- import logging
3
- import asyncio
4
- import os
5
- import aiohttp
6
- from aiohttp import web
7
-
8
- # Включаем логирование
9
- logging.basicConfig(
10
- level=logging.INFO,
11
- format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
12
- handlers=[logging.StreamHandler(sys.stdout)]
13
- )
14
-
15
- # ============================================================
16
- # МАГИЯ: Подменяем Bot() ДО импорта bot.py!
17
- # ============================================================
18
- from aiogram import Bot
19
- from aiogram.client.session.aiohttp import AiohttpSession
20
- from aiogram.client.telegram import TelegramAPIServer
21
-
22
- proxy_server = os.getenv("TELEGRAM_API_SERVER")
23
-
24
- if proxy_server:
25
- # Убираем слэш на конце, если он есть
26
- clean_proxy = proxy_server.strip().rstrip('/')
27
-
28
- # СТАНДАРТНЫЙ СПОСОБ AIOGRAM: Меняем сервер API на наш Worker!
29
- # Это работает ИДЕАЛЬНО, так как aiogram сам формирует правильные запросы
30
- # без хаков с патчами httpx.
31
- custom_server = TelegramAPIServer.from_base(clean_proxy)
32
- logging.critical(f"✅ [PROXY] Установлен кастомный Telegram API Server: {custom_server.base}")
33
-
34
- # Перехватываем создание Bot(), чтобы всунуть наш custom_server
35
- _original_bot_init = Bot.__init__
36
-
37
- def _patched_bot_init(self, token, **kwargs):
38
- if 'session' not in kwargs:
39
- # Создаем сессию с нашим прокси-сервером
40
- kwargs['session'] = AiohttpSession(api=custom_server)
41
- _original_bot_init(self, token, **kwargs)
42
-
43
- Bot.__init__ = _patched_bot_init
44
-
45
- # Импорт бота (теперь bot.bot создастся с нашим custom_server!)
46
- import bot as M
47
- dp = M.dp
48
- bot = M.bot
49
-
50
- # ОТЛАДОЧНЫЙ МИДЛВАРЬ
51
- from aiogram import BaseMiddleware
52
-
53
- class DebugRawMiddleware(BaseMiddleware):
54
- async def __call__(self, handler, event, data):
55
- logging.critical(f"🚨 [RAW MIDDLEWARE] ВХОДЯЩЕЕ ОБНОВЛЕНИЕ! Type: {type(event).__name__}")
56
- try:
57
- result = await handler(event, data)
58
- logging.critical(f"🚨 [RAW MIDDLEWARE] Хендлер отработал!")
59
- return result
60
- except Exception as e:
61
- logging.critical(f"🔥 [RAW MIDDLEWARE] ОШИБКА: {e}", exc_info=True)
62
- raise
63
-
64
- dp.message.middleware(DebugRawMiddleware())
65
- dp.callback_query.middleware(DebugRawMiddleware())
66
- logging.info("✅ [DEBUG] Мидлварь внедрен!")
67
-
68
- # Polling логика
69
- async def run_bot():
70
- await M.init_db()
71
- await M.start_cleanup_scheduler()
72
-
73
- logging.info("🚨 Удаляем Webhook...")
74
- try:
75
- await bot.delete_webhook(drop_pending_updates=True)
76
- logging.info("🚨 Webhook удален!")
77
- except Exception as e:
78
- logging.critical(f"🔥 Не удалось удалить Webhook (Прокси мертв?): {e}")
79
- return
80
-
81
- try:
82
- me = await bot.get_me()
83
- logging.critical(f"🚨 Бот: @{me.username} (id={me.id})")
84
- except Exception as e:
85
- logging.critical(f"🔥 Токен/Прокси мертв: {e}")
86
- return
87
-
88
- logging.info("🚀 POLLING ЗАПУЩЕН!")
89
- from aiogram import enums
90
- try:
91
- allowed_updates = [
92
- enums.UpdateType.MESSAGE,
93
- enums.UpdateType.CALLBACK_QUERY,
94
- enums.UpdateType.MY_CHAT_MEMBER,
95
- ]
96
- await dp.start_polling(bot, allowed_updates=allowed_updates)
97
- except Exception as e:
98
- logging.exception(f"🔥 POLLING УПАЛ: {e}")
99
-
100
- # Мини сервер для HF Spaces
101
- async def ping(r): return web.Response(text="OK")
102
-
103
- def main():
104
- app = web.Application()
105
- app.router.add_get('/', ping)
106
-
107
- async def start_bg(app):
108
- app['bot'] = asyncio.create_task(run_bot())
109
- async def stop_bg(app):
110
- app['bot'].cancel()
111
-
112
- app.on_startup.append(start_bg)
113
- app.on_shutdown.append(stop_bg)
114
-
115
- web.run_app(app, host='0.0.0.0', port=int(os.getenv("PORT", 7860)))
116
-
117
- if __name__ == "__main__":
118
- main()
119
-