Merge pull request #22 from Vladless/youkassa
истекшие ключи автоматически удаляются
This commit is contained in:
@@ -9,19 +9,13 @@ storage = MemoryStorage()
|
||||
dp = Dispatcher(bot=bot, storage=storage)
|
||||
router = Router()
|
||||
|
||||
from handlers import balance, keys, notifications, pay, profile, start
|
||||
from key_management import router as key_management_router
|
||||
from handlers import key_management, keys, notifications, pay, profile, start
|
||||
from handlers.key_management import router as key_management_router
|
||||
|
||||
# Регистрация обработчиков
|
||||
dp.include_router(start.router)
|
||||
dp.include_router(profile.router)
|
||||
dp.include_router(keys.router)
|
||||
dp.include_router(balance.router)
|
||||
dp.include_router(key_management_router)
|
||||
dp.include_router(key_management.router)
|
||||
dp.include_router(pay.router)
|
||||
dp.include_router(notifications.router)
|
||||
|
||||
|
||||
|
||||
async def on_startup(dispatcher: Dispatcher):
|
||||
await login_with_credentials()
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
import aiosqlite
|
||||
from aiogram import Router, types
|
||||
|
||||
router = Router()
|
||||
|
||||
@router.callback_query(lambda c: c.data == 'view_balance')
|
||||
async def process_callback_view_balance(callback_query: types.CallbackQuery):
|
||||
tg_id = callback_query.from_user.id
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import asyncio
|
||||
import re
|
||||
import uuid
|
||||
from datetime import datetime, timedelta
|
||||
@@ -11,19 +11,6 @@ from database import get_balance, update_balance
|
||||
|
||||
router = Router()
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import asyncpg
|
||||
from aiogram import Router, types
|
||||
|
||||
from auth import login_with_credentials
|
||||
from bot import bot
|
||||
from client import delete_client, extend_client_key
|
||||
from config import ADMIN_PASSWORD, ADMIN_USERNAME, DATABASE_URL
|
||||
from database import get_balance, update_balance
|
||||
|
||||
router = Router()
|
||||
|
||||
# Обработка запроса на просмотр ключей
|
||||
@router.callback_query(lambda c: c.data == 'view_keys')
|
||||
async def process_callback_view_keys(callback_query: types.CallbackQuery):
|
||||
|
||||
+18
-20
@@ -1,33 +1,21 @@
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import asyncpg
|
||||
from aiogram import Bot, Router, types
|
||||
from aiogram.filters import Command
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from aiogram import Bot, Router
|
||||
from aiogram.fsm.state import State, StatesGroup
|
||||
from aiogram.types import ( # Импортируем необходимые классы
|
||||
InlineKeyboardButton, InlineKeyboardMarkup)
|
||||
|
||||
from bot import bot
|
||||
from config import ADMIN_ID, DATABASE_URL
|
||||
from database import get_all_users
|
||||
from config import DATABASE_URL, ADMIN_PASSWORD, ADMIN_USERNAME
|
||||
from client import delete_client
|
||||
from auth import login_with_credentials
|
||||
|
||||
router = Router()
|
||||
|
||||
class NotificationStates(StatesGroup):
|
||||
waiting_for_notification_text = State()
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import asyncpg
|
||||
from aiogram import Bot, Router, types
|
||||
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
||||
|
||||
from bot import bot
|
||||
from config import DATABASE_URL
|
||||
|
||||
router = Router()
|
||||
|
||||
async def notify_expiring_keys(bot: Bot):
|
||||
try:
|
||||
conn = await asyncpg.connect(DATABASE_URL)
|
||||
@@ -62,21 +50,31 @@ async def notify_expiring_keys(bot: Bot):
|
||||
|
||||
# Обрабатываем истекшие ключи
|
||||
expired_records = await conn.fetch('''
|
||||
SELECT tg_id, email FROM keys
|
||||
SELECT tg_id, email, client_id FROM keys
|
||||
WHERE expiry_time <= $1
|
||||
''', datetime.utcnow().timestamp() * 1000)
|
||||
|
||||
for record in expired_records:
|
||||
tg_id = record['tg_id']
|
||||
email = record['email']
|
||||
client_id = record['client_id']
|
||||
|
||||
# Удаляем ключ из базы данных
|
||||
await conn.execute('DELETE FROM keys WHERE client_id = $1', client_id)
|
||||
|
||||
# Создаем сессию с использованием учетных данных
|
||||
session = login_with_credentials(ADMIN_USERNAME, ADMIN_PASSWORD)
|
||||
|
||||
# Удаляем клиента из панели
|
||||
delete_client(session, client_id)
|
||||
|
||||
keyboard = InlineKeyboardMarkup(inline_keyboard=[
|
||||
[InlineKeyboardButton(text='1 месяц (100 руб.)', callback_data=f'renew_plan|1|{record["client_id"]}')],
|
||||
[InlineKeyboardButton(text='3 месяца (250 руб.)', callback_data=f'renew_plan|3|{record["client_id"]}')],
|
||||
[InlineKeyboardButton(text='1 месяц (100 руб.)', callback_data=f'renew_plan|1|{client_id}')],
|
||||
[InlineKeyboardButton(text='3 месяца (250 руб.)', callback_data=f'renew_plan|3|{client_id}')],
|
||||
[InlineKeyboardButton(text='Пополнить баланс', callback_data='replenish_balance')]
|
||||
])
|
||||
|
||||
message = f"Ваш ключ <b>{email}</b> уже истек. Пожалуйста, продлите его."
|
||||
message = f"Ваш ключ <b>{email}</b> уже истек и был удален. Пожалуйста, продлите его."
|
||||
await bot.send_message(chat_id=tg_id, text=message, parse_mode='HTML', reply_markup=keyboard)
|
||||
|
||||
finally:
|
||||
|
||||
+7
-6
@@ -1,17 +1,18 @@
|
||||
import logging
|
||||
import uuid
|
||||
|
||||
import asyncpg
|
||||
from aiogram import Router, types
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from aiogram.fsm.state import State, StatesGroup
|
||||
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
||||
from yookassa import Configuration, Payment # Импортируем ЮKассу
|
||||
from aiohttp import web
|
||||
import logging
|
||||
import uuid
|
||||
from yookassa import Configuration, Payment # Импортируем ЮKассу
|
||||
|
||||
from bot import bot
|
||||
from config import YOOKASSA_SECRET_KEY, YOOKASSA_SHOP_ID
|
||||
from database import (add_connection, check_connection_exists, get_balance,
|
||||
get_key_count, update_balance)
|
||||
from config import YOOKASSA_SECRET_KEY, YOOKASSA_SHOP_ID
|
||||
from database import (add_connection, check_connection_exists, get_key_count,
|
||||
update_balance)
|
||||
from handlers.profile import process_callback_view_profile
|
||||
|
||||
router = Router()
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
from datetime import datetime
|
||||
|
||||
from aiogram import Router, types
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from aiogram.fsm.state import State, StatesGroup
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 KiB |
+7
-6
@@ -1,14 +1,14 @@
|
||||
import os
|
||||
|
||||
from aiogram import Router, types
|
||||
from aiogram import Router
|
||||
from aiogram.filters import Command
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from aiogram.fsm.state import State, StatesGroup
|
||||
from aiogram.types import (BufferedInputFile, CallbackQuery,
|
||||
InlineKeyboardButton, InlineKeyboardMarkup, Message)
|
||||
|
||||
from bot import bot
|
||||
from config import ADMIN_ID, CHANNEL_URL, SUPPORT_CHAT_URL # Добавьте SUPPORT_CHAT_URL
|
||||
from config import (ADMIN_ID, CHANNEL_URL, # Добавьте SUPPORT_CHAT_URL
|
||||
SUPPORT_CHAT_URL)
|
||||
|
||||
router = Router()
|
||||
|
||||
@@ -60,10 +60,11 @@ async def handle_about_vpn(callback_query: CallbackQuery):
|
||||
|
||||
info_message = (
|
||||
"*О VPN*\n\n"
|
||||
"Мы используем VLESS для обеспечения безопасного и надежного подключения к интернету. "
|
||||
"Каждому пользователю предоставляется индивидуальный ключ для подключения. "
|
||||
"Этот ключ необходим для использования нашего VPN-сервиса."
|
||||
"Мы используем высокоскоростные серверы в разных локациях и выдаём ключ каждому индивидуально. "
|
||||
"Также мы применяем новейшие протоколы шифрования для обеспечения безопасности ваших данных.\n\n"
|
||||
"<b>Ваш ключ — ваша безопасность! Не передавайте своё шифрование сторонним лицам.</b>"
|
||||
)
|
||||
|
||||
|
||||
button_back = InlineKeyboardButton(text='⬅️ Назад', callback_data='back_to_menu')
|
||||
inline_keyboard_back = InlineKeyboardMarkup(inline_keyboard=[[button_back]])
|
||||
|
||||
Reference in New Issue
Block a user