Меню переделано как Игорь хотел
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
---
|
|
||||||
|
|
||||||
# VPN Configuration Sales Bot
|
# VPN Configuration Sales Bot
|
||||||
|
|
||||||
@@ -33,5 +33,4 @@
|
|||||||
|
|
||||||
Этот проект распространяется под лицензией MIT License. Подробности в файле [LICENSE](./LICENSE).
|
Этот проект распространяется под лицензией MIT License. Подробности в файле [LICENSE](./LICENSE).
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|||||||
@@ -39,13 +39,13 @@ class MongoDBRepository:
|
|||||||
self.logger.debug(f"VPN сервер добавлен с ID: {result.inserted_id}")
|
self.logger.debug(f"VPN сервер добавлен с ID: {result.inserted_id}")
|
||||||
return result.inserted_id
|
return result.inserted_id
|
||||||
|
|
||||||
async def get_server(self, server_id: str):
|
async def get_server(self, server_name: str):
|
||||||
"""Получает сервер VPN по его ID."""
|
"""Получает сервер VPN по его ID."""
|
||||||
server = await self.collection.find_one({"name": server_id})
|
server = await self.collection.find_one({"server.name": server_name})
|
||||||
if server:
|
if server:
|
||||||
self.logger.debug(f"Найден VPN сервер: {server}")
|
self.logger.debug(f"Найден VPN сервер: {server}")
|
||||||
else:
|
else:
|
||||||
self.logger.debug(f"VPN сервер с ID {server_id} не найден.")
|
self.logger.debug(f"VPN сервер с ID {server_name} не найден.")
|
||||||
return server
|
return server
|
||||||
|
|
||||||
async def get_server_with_least_clients(self):
|
async def get_server_with_least_clients(self):
|
||||||
|
|||||||
@@ -181,17 +181,6 @@ class DatabaseManager:
|
|||||||
self.logger.error(f"Не удалось найти сервер с ID {user_sub.vpn_server_id}.")
|
self.logger.error(f"Не удалось найти сервер с ID {user_sub.vpn_server_id}.")
|
||||||
return "ERROR"
|
return "ERROR"
|
||||||
|
|
||||||
# Найдем клиента на сервере по telegram_id
|
|
||||||
client = None
|
|
||||||
for client_info in server['clients']:
|
|
||||||
if client_info['subscriptions']['tgId'] == telegram_id:
|
|
||||||
client = client_info
|
|
||||||
break
|
|
||||||
|
|
||||||
if not client:
|
|
||||||
self.logger.error(f"Не удалось найти клиента с Telegram ID {telegram_id} на сервере.")
|
|
||||||
return "ERROR"
|
|
||||||
|
|
||||||
# Доступ к данным сервера для добавления клиента
|
# Доступ к данным сервера для добавления клиента
|
||||||
server_info = server['server']
|
server_info = server['server']
|
||||||
url_base = f"https://{server_info['ip']}:{server_info['port']}/{server_info['secretKey']}"
|
url_base = f"https://{server_info['ip']}:{server_info['port']}/{server_info['secretKey']}"
|
||||||
@@ -203,10 +192,8 @@ class DatabaseManager:
|
|||||||
# Инициализируем взаимодействие с панелью управления
|
# Инициализируем взаимодействие с панелью управления
|
||||||
panel = PanelInteraction(url_base, login_data, self.logger)
|
panel = PanelInteraction(url_base, login_data, self.logger)
|
||||||
|
|
||||||
# Добавляем клиента на сервер
|
|
||||||
client_id = client['id']
|
|
||||||
expiry_date_iso = user_sub.expiry_date.isoformat()
|
expiry_date_iso = user_sub.expiry_date.isoformat()
|
||||||
response = await panel.add_client(client_id, expiry_date_iso, user.username)
|
response = await panel.add_client(user.id, expiry_date_iso, user.username)
|
||||||
|
|
||||||
# Логируем результат
|
# Логируем результат
|
||||||
if response == "OK":
|
if response == "OK":
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ services:
|
|||||||
context: .
|
context: .
|
||||||
container_name: telegram_bot
|
container_name: telegram_bot
|
||||||
environment:
|
environment:
|
||||||
TOKEN: "7502946151:AAHspA8iieJqrhUHZveILGfeZWp-VqQhEnQ"
|
TOKEN: "8104061818:AAGJ6H1PTFmfJm-_mZqGv7EnHxGl4dZndnU"
|
||||||
POSTGRES_URL: "postgresql+asyncpg://AH3J9GSPBYOP:uPS9?y~mcu2@postgres:5432/bot_db"
|
POSTGRES_URL: "postgresql+asyncpg://AH3J9GSPBYOP:uPS9?y~mcu2@postgres:5432/bot_db"
|
||||||
MONGO_URL: "mongodb://root:itOj4CE2miKR@mongodb:27017"
|
MONGO_URL: "mongodb://root:itOj4CE2miKR@mongodb:27017"
|
||||||
DB_NAME: "MongoDBSub&Ser"
|
DB_NAME: "MongoDBSub&Ser"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ from aiogram.filters import Command
|
|||||||
from databases.postgresql import DatabaseManager
|
from databases.postgresql import DatabaseManager
|
||||||
from databases.model import User, Subscription, Transaction, Administrators
|
from databases.model import User, Subscription, Transaction, Administrators
|
||||||
from databases.db_config import get_postgres_session
|
from databases.db_config import get_postgres_session
|
||||||
from keyboard.keyboards import subhist_keyboard,confirm_popup_keyboard,tarif_confirm_keyboard, popup_keyboard, main_keyboard,faq_keyboard,about_tarifs_keyboard, account_keyboard, buy_keyboard,balance_keyboard,guide_keyboard,tarif_Lark_keyboard,tarif_Lark_pro_keyboard,tranhist_keyboard
|
from keyboard.keyboards import subhist_keyboard,confirm_popup_keyboard,tarif_confirm_keyboard, popup_keyboard, main_keyboard,faq_keyboard, account_keyboard, buy_keyboard,balance_keyboard,guide_keyboard,tarif_Lark_keyboard,tarif_Lark_pro_keyboard,tranhist_keyboard
|
||||||
|
|
||||||
# Инициализируем менеджер базы данных
|
# Инициализируем менеджер базы данных
|
||||||
db_manager = DatabaseManager(get_postgres_session)
|
db_manager = DatabaseManager(get_postgres_session)
|
||||||
@@ -24,14 +24,26 @@ async def start_command(message: types.Message):
|
|||||||
"""
|
"""
|
||||||
Обработчик команды /start.
|
Обработчик команды /start.
|
||||||
"""
|
"""
|
||||||
await message.answer("Привет! Я ваш Telegram-бот.", reply_markup=main_keyboard())
|
await message.answer(f"""Приветствуем в рядах птенец {message.from_user.username}🐣
|
||||||
|
\nСкорее пополни баланс, приобрети подписку и получай доступ к TikTok, YouTube, Discord, Instagram на всех устройствах без ограничений ❕❕❕
|
||||||
|
\nОзнакомься с руководством по пользованию и выбери подходящий тариф 🦅
|
||||||
|
\nСледи за акциями, спец-предложениями, а также розыгрышами по ссылке ниже
|
||||||
|
\n👇👇👇
|
||||||
|
\nhttps://t.me/+0z5xqn3F1m02OTJi
|
||||||
|
\nС любовью ваши пернатые разработчики 🤍🤍🤍""", reply_markup=main_keyboard())
|
||||||
|
|
||||||
async def start_callback_handler(callback: types.CallbackQuery):
|
async def start_callback_handler(callback: types.CallbackQuery):
|
||||||
"""
|
"""
|
||||||
Обработчик callback_query с data="base".
|
Обработчик callback_query с data="base".
|
||||||
"""
|
"""
|
||||||
await callback.message.edit_text(
|
await callback.message.edit_text(
|
||||||
f"Привет! Я ваш Telegram-бот.",
|
f"""Приветствуем в рядах птенец {callback.from_user.username}🐣
|
||||||
|
\nСкорее пополни баланс, приобрети подписку и получай доступ к TikTok, YouTube, Discord, Instagram на всех устройствах без ограничений ❕❕❕
|
||||||
|
\nОзнакомься с руководством по пользованию и выбери подходящий тариф 🦅
|
||||||
|
\nСледи за акциями, спец-предложениями, а также розыгрышами по ссылке ниже
|
||||||
|
\n👇👇👇
|
||||||
|
\nhttps://t.me/+0z5xqn3F1m02OTJi
|
||||||
|
\nС любовью ваши пернатые разработчики 🤍🤍🤍""",
|
||||||
reply_markup=main_keyboard()
|
reply_markup=main_keyboard()
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -48,9 +60,9 @@ async def profile_callback_handler(callback: types.CallbackQuery):
|
|||||||
return
|
return
|
||||||
|
|
||||||
if user:
|
if user:
|
||||||
|
text = f"""Ваш профиль:\nID: {user.username}\nБаланс: {user.balance}"""
|
||||||
await callback.message.edit_text(
|
await callback.message.edit_text(
|
||||||
f"Ваш профиль:\n"
|
text,
|
||||||
f"👤 Username: {user.username}\n",
|
|
||||||
reply_markup=account_keyboard()
|
reply_markup=account_keyboard()
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@@ -71,7 +83,7 @@ async def balance_callback_handler(callback: types.CallbackQuery):
|
|||||||
|
|
||||||
if user:
|
if user:
|
||||||
await callback.message.edit_text(
|
await callback.message.edit_text(
|
||||||
f"Ваш баланс: {user.balance} рубликов",
|
f"Ваш баланс: {user.balance} ₽",
|
||||||
reply_markup=balance_keyboard()
|
reply_markup=balance_keyboard()
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@@ -170,7 +182,7 @@ async def buy_subscription_callback_handler(callback: types.CallbackQuery):
|
|||||||
Обработчик callback_query с data="buy_subscription".
|
Обработчик callback_query с data="buy_subscription".
|
||||||
"""
|
"""
|
||||||
await callback.message.edit_text(
|
await callback.message.edit_text(
|
||||||
f"Покупайте, покупайте потому что мы скоро закроемся!!!",
|
f"Ознакомься с условиями в вкладке \"О тарифах\" и выбери подходящий 🦅",
|
||||||
reply_markup=buy_keyboard()
|
reply_markup=buy_keyboard()
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -201,14 +213,14 @@ async def subs_pro_callback_handler(callback: types.CallbackQuery):
|
|||||||
reply_markup=tarif_Lark_pro_keyboard()
|
reply_markup=tarif_Lark_pro_keyboard()
|
||||||
)
|
)
|
||||||
|
|
||||||
async def about_tarifs_callback_handler(callback: types.CallbackQuery):
|
# async def about_tarifs_callback_handler(callback: types.CallbackQuery):
|
||||||
"""
|
# """
|
||||||
Обработчик callback_query с data="about_tarifs".
|
# Обработчик callback_query с data="about_tarifs".
|
||||||
"""
|
# """
|
||||||
await callback.message.edit_text(
|
# await callback.message.edit_text(
|
||||||
f"Бла бла бла, хуйня на хуйне",
|
# f"Бла бла бла, хуйня на хуйне",
|
||||||
reply_markup=about_tarifs_keyboard()
|
# reply_markup=about_tarifs_keyboard()
|
||||||
)
|
# )
|
||||||
|
|
||||||
async def faq_callback_handler(callback:types.CallbackQuery):
|
async def faq_callback_handler(callback:types.CallbackQuery):
|
||||||
"""
|
"""
|
||||||
@@ -309,7 +321,7 @@ def register_handlers(dp: Dispatcher):
|
|||||||
dp.message.register(start_command, Command("start"))
|
dp.message.register(start_command, Command("start"))
|
||||||
dp.callback_query.register(balance_callback_handler, lambda c: c.data == "balance")
|
dp.callback_query.register(balance_callback_handler, lambda c: c.data == "balance")
|
||||||
dp.callback_query.register(guide_callback_handler, lambda c: c.data == "guide")
|
dp.callback_query.register(guide_callback_handler, lambda c: c.data == "guide")
|
||||||
dp.callback_query.register(about_tarifs_callback_handler, lambda c: c.data == "about_tarifs")
|
# dp.callback_query.register(about_tarifs_callback_handler, lambda c: c.data == "about_tarifs")
|
||||||
dp.callback_query.register(lark_tariff_callback_handler, lambda c: c.data.startswith("Lark:"))
|
dp.callback_query.register(lark_tariff_callback_handler, lambda c: c.data.startswith("Lark:"))
|
||||||
dp.callback_query.register(confirm_callback_handler, lambda c: c.data.startswith("confirm:"))
|
dp.callback_query.register(confirm_callback_handler, lambda c: c.data.startswith("confirm:"))
|
||||||
dp.callback_query.register(popup_confirm_callback_handler, lambda c: c.data.startswith("popup:"))
|
dp.callback_query.register(popup_confirm_callback_handler, lambda c: c.data.startswith("popup:"))
|
||||||
@@ -31,7 +31,7 @@ def buy_keyboard():
|
|||||||
builder = InlineKeyboardBuilder()
|
builder = InlineKeyboardBuilder()
|
||||||
builder.row(InlineKeyboardButton(text="Тариф Lark", callback_data="subs"))
|
builder.row(InlineKeyboardButton(text="Тариф Lark", callback_data="subs"))
|
||||||
builder.row(InlineKeyboardButton(text="Тариф Lark Pro", callback_data="subs_pro"))
|
builder.row(InlineKeyboardButton(text="Тариф Lark Pro", callback_data="subs_pro"))
|
||||||
builder.row(InlineKeyboardButton(text="О тарифах", callback_data="about_tarifs"))
|
builder.row(InlineKeyboardButton(text="О тарифах", url="https://t.me/proxylark/19"))
|
||||||
builder.row(InlineKeyboardButton(text="Назад", callback_data="profile"))
|
builder.row(InlineKeyboardButton(text="Назад", callback_data="profile"))
|
||||||
return builder.as_markup()
|
return builder.as_markup()
|
||||||
|
|
||||||
@@ -48,9 +48,9 @@ def popup_keyboard():
|
|||||||
Пополнение
|
Пополнение
|
||||||
"""
|
"""
|
||||||
builder = InlineKeyboardBuilder()
|
builder = InlineKeyboardBuilder()
|
||||||
builder.row(InlineKeyboardButton(text="Пополнение на 100", callback_data="popup:100"))
|
builder.row(InlineKeyboardButton(text="200₽", callback_data="popup:200"),InlineKeyboardButton(text="500₽", callback_data="popup:500"))
|
||||||
builder.row(InlineKeyboardButton(text="Пополнение на 300", callback_data="popup:300"))
|
builder.row(InlineKeyboardButton(text="1000₽", callback_data="popup:1000"),InlineKeyboardButton(text="2000₽", callback_data="popup:2000"))
|
||||||
builder.row(InlineKeyboardButton(text="Пополнение на 500", callback_data="popup:500"))
|
builder.row(InlineKeyboardButton(text="3000₽", callback_data="popup:3000"),InlineKeyboardButton(text="5000₽", callback_data="popup:5000"))
|
||||||
builder.row(InlineKeyboardButton(text="Назад", callback_data="balance"))
|
builder.row(InlineKeyboardButton(text="Назад", callback_data="balance"))
|
||||||
return builder.as_markup()
|
return builder.as_markup()
|
||||||
|
|
||||||
@@ -70,8 +70,8 @@ def tarif_Lark_keyboard():
|
|||||||
"""
|
"""
|
||||||
builder = InlineKeyboardBuilder()
|
builder = InlineKeyboardBuilder()
|
||||||
builder.row(InlineKeyboardButton(text="Тариф Lark 1 Месяц", callback_data="Lark:Standart:1"))
|
builder.row(InlineKeyboardButton(text="Тариф Lark 1 Месяц", callback_data="Lark:Standart:1"))
|
||||||
builder.row(InlineKeyboardButton(text="Тариф Lark 3 Месяц", callback_data="Lark:Standart:3"))
|
|
||||||
builder.row(InlineKeyboardButton(text="Тариф Lark 6 Месяц", callback_data="Lark:Standart:6"))
|
builder.row(InlineKeyboardButton(text="Тариф Lark 6 Месяц", callback_data="Lark:Standart:6"))
|
||||||
|
builder.row(InlineKeyboardButton(text="Тариф Lark 12 Месяц", callback_data="Lark:Standart:12"))
|
||||||
builder.row(InlineKeyboardButton(text="Назад", callback_data="buy_subscription"))
|
builder.row(InlineKeyboardButton(text="Назад", callback_data="buy_subscription"))
|
||||||
return builder.as_markup()
|
return builder.as_markup()
|
||||||
|
|
||||||
@@ -81,8 +81,8 @@ def tarif_Lark_pro_keyboard():
|
|||||||
"""
|
"""
|
||||||
builder = InlineKeyboardBuilder()
|
builder = InlineKeyboardBuilder()
|
||||||
builder.row(InlineKeyboardButton(text="Тариф Lark Pro 1 Месяц", callback_data="Lark:Pro:1"))
|
builder.row(InlineKeyboardButton(text="Тариф Lark Pro 1 Месяц", callback_data="Lark:Pro:1"))
|
||||||
builder.row(InlineKeyboardButton(text="Тариф Lark Pro 3 Месяц", callback_data="Lark:Pro:3"))
|
|
||||||
builder.row(InlineKeyboardButton(text="Тариф Lark Pro 6 Месяц", callback_data="Lark:Pro:6"))
|
builder.row(InlineKeyboardButton(text="Тариф Lark Pro 6 Месяц", callback_data="Lark:Pro:6"))
|
||||||
|
builder.row(InlineKeyboardButton(text="Тариф Lark Pro 12 Месяц", callback_data="Lark:Pro:12"))
|
||||||
builder.row(InlineKeyboardButton(text="Назад", callback_data="buy_subscription"))
|
builder.row(InlineKeyboardButton(text="Назад", callback_data="buy_subscription"))
|
||||||
return builder.as_markup()
|
return builder.as_markup()
|
||||||
|
|
||||||
@@ -97,13 +97,13 @@ def guide_keyboard():
|
|||||||
return builder.as_markup()
|
return builder.as_markup()
|
||||||
|
|
||||||
|
|
||||||
def about_tarifs_keyboard():
|
# def about_tarifs_keyboard():
|
||||||
"""
|
# """
|
||||||
О тарифах
|
# О тарифах
|
||||||
"""
|
# """
|
||||||
builder = InlineKeyboardBuilder()
|
# builder = InlineKeyboardBuilder()
|
||||||
builder.row(InlineKeyboardButton(text="Назад", callback_data="buy_subscription"))
|
# builder.row(InlineKeyboardButton(text="Назад", callback_data="buy_subscription"))
|
||||||
return builder.as_markup()
|
# return builder.as_markup()
|
||||||
|
|
||||||
|
|
||||||
def faq_keyboard():
|
def faq_keyboard():
|
||||||
|
|||||||
Reference in New Issue
Block a user