Private
Public Access
forked from FOSS/AutoShop-Djimbo-Simple
feat: add Lolzteam payment integration
This commit is contained in:
@@ -7,9 +7,11 @@ from tgbot.database import Paymentsx
|
||||
from tgbot.keyboards.inline_admin import (
|
||||
close_finl,
|
||||
payment_cryptobot_finl,
|
||||
payment_lolzteam_finl,
|
||||
payment_stars_finl,
|
||||
)
|
||||
from tgbot.services.api_cryptobot import CryptobotAPI
|
||||
from tgbot.services.api_lolzteam import LolzteamAPI
|
||||
from tgbot.services.api_stars import StarsAPI
|
||||
from tgbot.utils.const_functions import ded, is_number, to_number
|
||||
from tgbot.utils.misc.bot_models import FSM, ARS
|
||||
@@ -30,6 +32,19 @@ async def payments_cryptobot_open(
|
||||
)
|
||||
|
||||
|
||||
# Управление - Lolzteam
|
||||
@router.message(F.text == "🟢 Lolzteam")
|
||||
async def payments_cryptobot_open(
|
||||
message: Message, bot: Bot, state: FSM, arSession: ARS
|
||||
):
|
||||
await state.clear()
|
||||
|
||||
await message.answer(
|
||||
"<b>🟢 Управление - Lolzteam</b>",
|
||||
reply_markup=await payment_lolzteam_finl(),
|
||||
)
|
||||
|
||||
|
||||
# Управление - Звёзды
|
||||
@router.message(F.text == "⭐️ Звёзды")
|
||||
async def payments_stars_open(message: Message, bot: Bot, state: FSM, arSession: ARS):
|
||||
@@ -161,6 +176,163 @@ async def payments_cryptobot_get(
|
||||
)
|
||||
|
||||
|
||||
################################################################################
|
||||
################################### LOLZTEAM ##################################
|
||||
# Баланс - Lolzteam
|
||||
@router.callback_query(F.data == "payment_lolzteam_balance")
|
||||
async def payments_lolzteam_balance(
|
||||
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
||||
):
|
||||
response = await (
|
||||
await LolzteamAPI.connect(
|
||||
bot=bot,
|
||||
arSession=arSession,
|
||||
update=call,
|
||||
skipping_error=True,
|
||||
)
|
||||
).balance()
|
||||
|
||||
await call.message.answer(
|
||||
response,
|
||||
reply_markup=close_finl(),
|
||||
)
|
||||
|
||||
|
||||
# Информация - Lolzteam
|
||||
@router.callback_query(F.data == "payment_lolzteam_check")
|
||||
async def payment_lolzteam_check(
|
||||
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
||||
):
|
||||
status, response = await (
|
||||
await LolzteamAPI.connect(
|
||||
bot=bot,
|
||||
arSession=arSession,
|
||||
update=call,
|
||||
skipping_error=True,
|
||||
)
|
||||
).check()
|
||||
|
||||
await call.message.answer(
|
||||
response,
|
||||
reply_markup=close_finl(),
|
||||
)
|
||||
|
||||
|
||||
# Изменение - Lolzteam
|
||||
@router.callback_query(F.data == "payment_lolzteam_edit")
|
||||
async def payment_lolzteam_edit(
|
||||
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
||||
):
|
||||
await state.set_state("here_lolzteam_token")
|
||||
await call.message.edit_text(
|
||||
ded(f"""
|
||||
<b>🟢 Изменение Lolzteam - <a href='https://lolz.live/account/api'>API</a></b>
|
||||
➖➖➖➖➖➖➖➖➖➖
|
||||
▪️ Создайте Приложение в "Lolzteam", сгенерируйте токен (basic, invoice, market) и отправьте
|
||||
"""),
|
||||
disable_web_page_preview=True,
|
||||
)
|
||||
|
||||
|
||||
# Выключатель - Lolzteam
|
||||
@router.callback_query(F.data.startswith("payment_lolzteam_status:"))
|
||||
async def payment_lolzteam_status(
|
||||
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
||||
):
|
||||
get_status = call.data.split(":")[1]
|
||||
get_payments = await Paymentsx().get()
|
||||
|
||||
if get_status == "True" and get_payments.lolzteam_token == "None":
|
||||
return await call.answer(
|
||||
"❌ Токен данной платежной системы не был добавлен", True
|
||||
)
|
||||
|
||||
await Paymentsx().update(status_lolzteam=get_status)
|
||||
|
||||
await call.message.edit_text(
|
||||
"<b>🟢 Управление - Lolzteam</b>",
|
||||
reply_markup=await payment_lolzteam_finl(),
|
||||
)
|
||||
|
||||
|
||||
############################## ПРИНЯТИЕ LOLZTEAM ##############################
|
||||
# Принятие токена Lolzteam
|
||||
@router.message(StateFilter("here_lolzteam_token"))
|
||||
async def payments_lolzteam_get(message: Message, bot: Bot, state: FSM, arSession: ARS):
|
||||
get_token = message.text
|
||||
|
||||
cache_message = await message.answer(
|
||||
"<b>🟢 Проверка введённых Lolzteam данных... 🔄</b>"
|
||||
)
|
||||
|
||||
status, response = await (
|
||||
await LolzteamAPI.connect(
|
||||
bot=bot,
|
||||
arSession=arSession,
|
||||
update=message,
|
||||
skipping_error=True,
|
||||
token=get_token,
|
||||
)
|
||||
).check()
|
||||
|
||||
if status:
|
||||
await Paymentsx().update(lolzteam_token=get_token)
|
||||
|
||||
await state.set_state("here_lolzteam_merchant_id")
|
||||
await cache_message.edit_text(
|
||||
ded(f"""
|
||||
<b>🟢 Изменение Lolzteam - <a href='https://lzt.market/merchants'>Мерчанты</a></b>
|
||||
➖➖➖➖➖➖➖➖➖➖
|
||||
▪️ Создайте мерчант в "Lolzteam Market" и отправьте его ID
|
||||
"""),
|
||||
disable_web_page_preview=True,
|
||||
)
|
||||
|
||||
else:
|
||||
await cache_message.edit_text(
|
||||
"<b>🟢 Не удалось изменить Lolzteam кошелёк ❌</b>"
|
||||
)
|
||||
|
||||
|
||||
# Принятие айди мерчанта Lolzteam
|
||||
@router.message(StateFilter("here_lolzteam_merchant_id"))
|
||||
async def payments_lolzteam_merchant_id_get(
|
||||
message: Message, bot: Bot, state: FSM, arSession: ARS
|
||||
):
|
||||
get_payments = await Paymentsx().get()
|
||||
get_token = get_payments.lolzteam_token
|
||||
|
||||
get_merchant_id = message.text
|
||||
|
||||
await state.clear()
|
||||
|
||||
cache_message = await message.answer(
|
||||
"<b>🟢 Проверка введённых Lolzteam данных... 🔄</b>"
|
||||
)
|
||||
|
||||
status, response = await (
|
||||
await LolzteamAPI.connect(
|
||||
bot=bot,
|
||||
arSession=arSession,
|
||||
update=message,
|
||||
skipping_error=True,
|
||||
token=get_token,
|
||||
merchant_id=get_merchant_id,
|
||||
)
|
||||
).check()
|
||||
|
||||
if status:
|
||||
await Paymentsx().update(lolzteam_merchant_id=get_merchant_id)
|
||||
await cache_message.edit_text("<b>🟢 Lolzteam был успешно изменён ✅</b>")
|
||||
else:
|
||||
await cache_message.edit_text("<b>🟢 Не удалось изменить Lolzteam ❌</b>")
|
||||
|
||||
await message.answer(
|
||||
"<b>🟢 Управление - Lolzteam</b>",
|
||||
reply_markup=await payment_lolzteam_finl(),
|
||||
)
|
||||
|
||||
|
||||
################################################################################
|
||||
#################################### ЗВЁЗДЫ ####################################
|
||||
# Баланс - Звёзды
|
||||
|
||||
@@ -8,6 +8,7 @@ from aiogram.types import CallbackQuery, Message, PreCheckoutQuery
|
||||
from tgbot.database import Paymentsx, Refillx, Userx, Settingsx
|
||||
from tgbot.keyboards.inline_user import refill_bill_finl, refill_method_finl
|
||||
from tgbot.services.api_cryptobot import CryptobotAPI
|
||||
from tgbot.services.api_lolzteam import LolzteamAPI
|
||||
from tgbot.services.api_stars import StarsAPI
|
||||
from tgbot.utils.const_functions import is_number, to_number, gen_id, ded
|
||||
from tgbot.utils.misc.bot_logging import bot_logger
|
||||
@@ -26,6 +27,7 @@ async def refill_method_list(call: CallbackQuery, bot: Bot, state: FSM, arSessio
|
||||
|
||||
if (
|
||||
get_payments.status_cryptobot == "False"
|
||||
and get_payments.status_lolzteam == "False"
|
||||
and get_payments.status_stars == "False"
|
||||
):
|
||||
return await call.answer("❗️ Пополнения временно недоступны", True)
|
||||
@@ -49,6 +51,10 @@ async def refill_method_select(
|
||||
return await call.answer(
|
||||
"❌ Пополнение данным способом временно недоступно", True
|
||||
)
|
||||
elif refill_method == "Lolzteam" and get_payments.status_lolzteam == "False":
|
||||
return await call.answer(
|
||||
"❌ Пополнение данным способом временно недоступно", True
|
||||
)
|
||||
elif refill_method == "Stars" and get_payments.status_stars == "False":
|
||||
return await call.answer(
|
||||
"❌ Пополнение данным способом временно недоступно", True
|
||||
@@ -98,6 +104,15 @@ async def refill_amount_get(message: Message, bot: Bot, state: FSM, arSession: A
|
||||
)
|
||||
).bill(refill_amount)
|
||||
|
||||
elif refill_method == "Lolzteam":
|
||||
bill_message, bill_link, bill_receipt = await (
|
||||
await LolzteamAPI.connect(
|
||||
bot=bot,
|
||||
arSession=arSession,
|
||||
update=cache_message,
|
||||
)
|
||||
).bill(refill_amount)
|
||||
|
||||
elif refill_method == "Stars":
|
||||
bill_message, bill_link, bill_receipt = await (
|
||||
await StarsAPI.connect(
|
||||
@@ -106,6 +121,7 @@ async def refill_amount_get(message: Message, bot: Bot, state: FSM, arSession: A
|
||||
update=cache_message,
|
||||
)
|
||||
).bill(refill_amount)
|
||||
|
||||
else:
|
||||
return await cache_message.edit_text(
|
||||
f"<b>❌ Данный способ пополнения не найден. Попробуйте позже: {refill_method}</b>"
|
||||
@@ -180,6 +196,59 @@ async def refill_check_cryptobot(
|
||||
)
|
||||
|
||||
|
||||
# Проверка оплаты - Lolzteam
|
||||
@router.callback_query(F.data.startswith("Pay:Lolzteam"))
|
||||
async def refill_check_lolzteam(
|
||||
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
||||
):
|
||||
pay_method = call.data.split(":")[1]
|
||||
pay_comment = call.data.split(":")[2]
|
||||
|
||||
pay_status, pay_amount = await (
|
||||
await LolzteamAPI.connect(
|
||||
bot=bot,
|
||||
arSession=arSession,
|
||||
update=call,
|
||||
)
|
||||
).bill_check(pay_comment)
|
||||
|
||||
if pay_status == 0:
|
||||
refill_status = await refill_success(
|
||||
bot=bot,
|
||||
call=call,
|
||||
pay_method=pay_method,
|
||||
pay_amount=pay_amount,
|
||||
pay_comment=pay_comment,
|
||||
)
|
||||
|
||||
if refill_status == "ALREADY":
|
||||
await call.answer("❗ Ваше пополнение уже зачислено.", True, cache_time=60)
|
||||
await delete_refill_message(
|
||||
bot, call.message.chat.id, call.message.message_id
|
||||
)
|
||||
elif refill_status == "USER_NOT_FOUND":
|
||||
await call.answer(
|
||||
"❗ Пользователь не найден. Напишите в поддержку.", True, cache_time=30
|
||||
)
|
||||
elif pay_status == 1:
|
||||
await call.answer(
|
||||
"❗️ Не удалось проверить платёж. Попробуйте позже", True, cache_time=30
|
||||
)
|
||||
elif pay_status == 2:
|
||||
await call.answer(
|
||||
"❗️ Оплата не была найдена. Попробуйте позже", True, cache_time=5
|
||||
)
|
||||
elif pay_status == 3:
|
||||
await call.answer("❗️ Вы не успели оплатить счёт", True, cache_time=5)
|
||||
await call.message.edit_reply_markup()
|
||||
else:
|
||||
await call.answer(
|
||||
f"❗ Неизвестная ошибка {pay_status}. Обратитесь в поддержку.",
|
||||
True,
|
||||
cache_time=5,
|
||||
)
|
||||
|
||||
|
||||
# Проверка оплаты - Звёзды
|
||||
@router.callback_query(F.data.startswith("Pay:Stars"))
|
||||
async def refill_check_stars(call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS):
|
||||
@@ -357,6 +426,8 @@ async def save_refill_success(
|
||||
) -> Tuple[str, int]:
|
||||
if pay_method == "Cryptobot":
|
||||
text_method = "CryptoBot"
|
||||
elif pay_method == "Lolzteam":
|
||||
text_method = "Lolzteam"
|
||||
elif pay_method == "Stars":
|
||||
text_method = "Telegram Stars"
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user