diff --git a/bot.py b/bot.py index d6693ea..9883e52 100644 --- a/bot.py +++ b/bot.py @@ -4,6 +4,7 @@ import os import sys import logging import base64 +import re from datetime import datetime from telegram import Update from telegram.ext import ( @@ -12,7 +13,8 @@ from telegram.ext import ( MessageHandler, ConversationHandler, filters, - ContextTypes + ContextTypes, + ApplicationBuilder ) from config import TELEGRAM_BOT_TOKEN, PIApi_API_KEY, PIApi_BASE_URL, PROXY_URL, PROXY_TYPE @@ -149,7 +151,6 @@ async def call_piapi_api(image_path: str, prompt: str) -> str: # Используем aiohttp-socks для запросов from aiohttp_socks import ProxyConnector - import re # Парсим прокси match = re.search(r'socks5://([^:]+):([^@]+)@([^:]+):(\d+)', PROXY_URL) @@ -329,30 +330,29 @@ async def error_handler(update: Update, context: ContextTypes.DEFAULT_TYPE): async def main(): - """Запуск бота""" + """Запуск бота с прокси как в примере""" print("\n" + "=" * 50) print("🤖 ЗАПУСК TELEGRAM БОТА") print("=" * 50) - if not PROXY_URL: - print("❌ Прокси не настроен!") - return - - print(f"🔌 Прокси: {PROXY_URL.split('@')[-1] if '@' in PROXY_URL else PROXY_URL}") - print("=" * 50) - # Инициализация БД await init_db() - # Создаем приложение с поддержкой SOCKS5 - # python-telegram-bot[socks] автоматически поддерживает SOCKS5 - application = Application.builder().token(TELEGRAM_BOT_TOKEN).build() + # Создаем приложение с прокси (как в вашем примере) + TOKEN = TELEGRAM_BOT_TOKEN + PROXY = PROXY_URL - # Для исходящих запросов бота используем прокси - # Устанавливаем прокси через переменные окружения - os.environ['ALL_PROXY'] = PROXY_URL - os.environ['HTTP_PROXY'] = PROXY_URL - os.environ['HTTPS_PROXY'] = PROXY_URL + builder = ApplicationBuilder().token(TOKEN) + + if PROXY: + builder = builder.proxy(PROXY).get_updates_proxy(PROXY) + print(f"🔌 Прокси: {PROXY.split('@')[-1] if '@' in PROXY else PROXY}") + else: + print("🔌 Прокси не используется") + + application = builder.build() + + print("=" * 50) # Регистрируем обработчики application.add_handler(CommandHandler("start", start)) @@ -363,14 +363,15 @@ async def main(): conv_handler = ConversationHandler( entry_points=[MessageHandler(filters.PHOTO, handle_photo)], states={AWAITING_PROMPT: [MessageHandler(filters.TEXT & ~filters.COMMAND, process_image)]}, - fallbacks=[CommandHandler("cancel", cancel)], + fallbacks=[CommandHandler("cancel", cancel), CommandHandler("start", start)], ) application.add_handler(conv_handler) application.add_error_handler(error_handler) - print("\n✅ Бот запускается через SOCKS5 прокси...") + print("\n✅ Бот запускается...") try: + # Запускаем бота await application.initialize() await application.start() await application.updater.start_polling() @@ -380,6 +381,7 @@ async def main(): print("=" * 50) print("\n📱 Отправь команду /test в Telegram\n") + # Держим бота запущенным await asyncio.Event().wait() except KeyboardInterrupt: diff --git a/config.py b/config.py index 60aaa57..12f4bc8 100644 --- a/config.py +++ b/config.py @@ -9,7 +9,7 @@ PIApi_BASE_URL = "https://api.piapi.ai/api/v1/task" # Прокси для всего PROXY_URL = os.getenv("PROXY_URL") -PROXY_TYPE = os.getenv("PROXY_TYPE", "http") +PROXY_TYPE = os.getenv("PROXY_TYPE", "socks5") if PROXY_URL: print(f"🔧 Прокси: {PROXY_URL.split('@')[-1] if '@' in PROXY_URL else PROXY_URL}")