From b340d07f5c63ab575a6b6287b81b37c8e3f4cdc1 Mon Sep 17 00:00:00 2001 From: Vladislav Lisitsyn <114032530+Vladless@users.noreply.github.com> Date: Mon, 16 Sep 2024 03:16:01 +0300 Subject: [PATCH] Delete bot_old.py --- bot_old.py | 140 ----------------------------------------------------- 1 file changed, 140 deletions(-) delete mode 100644 bot_old.py diff --git a/bot_old.py b/bot_old.py deleted file mode 100644 index a245a5b1..00000000 --- a/bot_old.py +++ /dev/null @@ -1,140 +0,0 @@ -from aiogram import Bot, Dispatcher, Router, F, types -from aiogram.filters import Command -from aiogram.types import Message -from aiogram.filters import Command -import requests -# from database import add_user, get_user, update_subscription -from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup -from aiogram.fsm.storage.memory import MemoryStorage -from aiogram.fsm.context import FSMContext -from aiogram.fsm.state import State, StatesGroup - -import asyncio -import json -from datetime import datetime, timedelta -import uuid - - -API_TOKEN = '7436953421:AAH9iUg86cLC8oxO_XZeqYEfSBhDGBodV5o' -API_URL = "https://vpn.pocomacho.ru:34268/solonet" -ADMIN_USERNAME = "paneladmin" -ADMIN_PASSWORD = "L7CMDASN9x7g" -ADD_CLIENT_URL = f"{API_URL}/panel/api/inbounds/addClient" - -bot = Bot(token=API_TOKEN) -storage = MemoryStorage() -dp = Dispatcher(storage=storage) -router = Router() - -class Form(StatesGroup): - waiting_for_key_name = State() - -def login_with_credentials(username, password): - auth_url = "https://vpn.pocomacho.ru:34268/solonet/login/" - data = { - "username": ADMIN_USERNAME, - "password": ADMIN_PASSWORD - } - response = requests.post(auth_url, json=data) - if response.status_code == 200: - # Если API возвращает токен, используйте его в заголовке - # return {"Authorization": f"Bearer {response.json().get('token')}"} - - # Если API использует сессии (например, с cookies) - session = requests.Session() - session.cookies.update(response.cookies) - return session - - else: - raise Exception(f"Ошибка авторизации: {response.status_code}, {response.text}") - -def add_client(session, client_id, email, tg_id, limit_ip, total_gb, expiry_time, enable, flow): - settings = { - "clients": [ - { - "id": client_id, - "alterId": 0, - "email": email, - "limitIp": limit_ip, - "totalGB": total_gb, - "expiryTime": expiry_time, - "enable": enable, - "tgId": tg_id, - "subId": "", - "flow": flow - } - ] - } - - data = { - "id": 1, # Можно изменить в зависимости от ваших требований - "settings": json.dumps(settings) - } - - headers = { - "Accept": "application/json" - } - - response = session.post(ADD_CLIENT_URL, headers=headers, json=data) - - if response.status_code == 200: - return response.json() - else: - raise Exception(f"Ошибка при добавлении клиента: {response.status_code}, {response.text}") - -# Обработчик команды /start -@dp.message(Command("start")) -async def start_command(message: Message): - # Создаем кнопки - button_create_key = InlineKeyboardButton(text='Создать ключ', callback_data='create_key') - keyboard = InlineKeyboardMarkup(inline_keyboard=[[button_create_key]]) - - await message.reply("Выберите действие:", reply_markup=keyboard) - -# Обработчик нажатия кнопки -@dp.callback_query(F.data == 'create_key') -async def process_callback_create_key(callback_query: types.CallbackQuery, state: FSMContext): - await callback_query.message.reply("Введите имя для нового ключа:") - await state.set_state(Form.waiting_for_key_name) # Устанавливаем состояние - - await callback_query.answer() - -# Обработчик текстовых сообщений -@dp.message() -async def handle_text(message: types.Message, state: FSMContext): - # Получаем текущее состояние - current_state = await state.get_state() - - if current_state == Form.waiting_for_key_name.state: - try: - # Авторизация - session = login_with_credentials(ADMIN_USERNAME, ADMIN_PASSWORD) - - # Параметры клиента - client_id = str(uuid.uuid4()) # Пример UUID - email = message.text - limit_ip = 1 - tg_id = message.from_user.id - total_gb = 0 # В байтах - current_time = datetime.utcnow() - expiry_time = int((current_time + timedelta(days=30)).timestamp() * 1000) # Временная метка в миллисекундах - enable = True - flow = "xtls-rprx-vision" - - # Добавление клиента - result = add_client(session, client_id, email, tg_id, limit_ip, total_gb, expiry_time, enable, flow) - - await message.reply(f"Ключ создан: {result}") - - # Сброс состояния - await state.clear() - except Exception as e: - await message.reply(f"Произошла ошибка: {e}") - -# Запуск бота -async def main(): - dp.include_router(router) # Подключение роутера - await dp.start_polling(bot) # Запуск поллинга - -if __name__ == '__main__': - asyncio.run(main())