This commit is contained in:
2026-05-04 12:57:37 +03:00
parent 015b22264c
commit 34d89c2245
2 changed files with 23 additions and 21 deletions
+22 -20
View File
@@ -4,6 +4,7 @@ import os
import sys import sys
import logging import logging
import base64 import base64
import re
from datetime import datetime from datetime import datetime
from telegram import Update from telegram import Update
from telegram.ext import ( from telegram.ext import (
@@ -12,7 +13,8 @@ from telegram.ext import (
MessageHandler, MessageHandler,
ConversationHandler, ConversationHandler,
filters, filters,
ContextTypes ContextTypes,
ApplicationBuilder
) )
from config import TELEGRAM_BOT_TOKEN, PIApi_API_KEY, PIApi_BASE_URL, PROXY_URL, PROXY_TYPE 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 для запросов # Используем aiohttp-socks для запросов
from aiohttp_socks import ProxyConnector from aiohttp_socks import ProxyConnector
import re
# Парсим прокси # Парсим прокси
match = re.search(r'socks5://([^:]+):([^@]+)@([^:]+):(\d+)', PROXY_URL) 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(): async def main():
"""Запуск бота""" """Запуск бота с прокси как в примере"""
print("\n" + "=" * 50) print("\n" + "=" * 50)
print("🤖 ЗАПУСК TELEGRAM БОТА") print("🤖 ЗАПУСК TELEGRAM БОТА")
print("=" * 50) 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() await init_db()
# Создаем приложение с поддержкой SOCKS5 # Создаем приложение с прокси (как в вашем примере)
# python-telegram-bot[socks] автоматически поддерживает SOCKS5 TOKEN = TELEGRAM_BOT_TOKEN
application = Application.builder().token(TELEGRAM_BOT_TOKEN).build() PROXY = PROXY_URL
# Для исходящих запросов бота используем прокси builder = ApplicationBuilder().token(TOKEN)
# Устанавливаем прокси через переменные окружения
os.environ['ALL_PROXY'] = PROXY_URL if PROXY:
os.environ['HTTP_PROXY'] = PROXY_URL builder = builder.proxy(PROXY).get_updates_proxy(PROXY)
os.environ['HTTPS_PROXY'] = PROXY_URL print(f"🔌 Прокси: {PROXY.split('@')[-1] if '@' in PROXY else PROXY}")
else:
print("🔌 Прокси не используется")
application = builder.build()
print("=" * 50)
# Регистрируем обработчики # Регистрируем обработчики
application.add_handler(CommandHandler("start", start)) application.add_handler(CommandHandler("start", start))
@@ -363,14 +363,15 @@ async def main():
conv_handler = ConversationHandler( conv_handler = ConversationHandler(
entry_points=[MessageHandler(filters.PHOTO, handle_photo)], entry_points=[MessageHandler(filters.PHOTO, handle_photo)],
states={AWAITING_PROMPT: [MessageHandler(filters.TEXT & ~filters.COMMAND, process_image)]}, 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_handler(conv_handler)
application.add_error_handler(error_handler) application.add_error_handler(error_handler)
print("\n✅ Бот запускается через SOCKS5 прокси...") print("\n✅ Бот запускается...")
try: try:
# Запускаем бота
await application.initialize() await application.initialize()
await application.start() await application.start()
await application.updater.start_polling() await application.updater.start_polling()
@@ -380,6 +381,7 @@ async def main():
print("=" * 50) print("=" * 50)
print("\n📱 Отправь команду /test в Telegram\n") print("\n📱 Отправь команду /test в Telegram\n")
# Держим бота запущенным
await asyncio.Event().wait() await asyncio.Event().wait()
except KeyboardInterrupt: except KeyboardInterrupt:
+1 -1
View File
@@ -9,7 +9,7 @@ PIApi_BASE_URL = "https://api.piapi.ai/api/v1/task"
# Прокси для всего # Прокси для всего
PROXY_URL = os.getenv("PROXY_URL") PROXY_URL = os.getenv("PROXY_URL")
PROXY_TYPE = os.getenv("PROXY_TYPE", "http") PROXY_TYPE = os.getenv("PROXY_TYPE", "socks5")
if PROXY_URL: if PROXY_URL:
print(f"🔧 Прокси: {PROXY_URL.split('@')[-1] if '@' in PROXY_URL else PROXY_URL}") print(f"🔧 Прокси: {PROXY_URL.split('@')[-1] if '@' in PROXY_URL else PROXY_URL}")