v0.1
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
@@ -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}")
|
||||||
|
|||||||
Reference in New Issue
Block a user