Private
Public Access
forked from FOSS/AutoShop-Djimbo-Simple
439 lines
13 KiB
Python
439 lines
13 KiB
Python
# - *- coding: utf- 8 - *-
|
|
from aiogram import Router, Bot, F
|
|
from aiogram.filters import StateFilter
|
|
from aiogram.types import CallbackQuery, Message
|
|
|
|
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
|
|
|
|
router = Router(name=__name__)
|
|
|
|
|
|
# Управление - CryptoBot
|
|
@router.message(F.text == "🔷 CryptoBot")
|
|
async def payments_cryptobot_open(
|
|
message: Message, bot: Bot, state: FSM, arSession: ARS
|
|
):
|
|
await state.clear()
|
|
|
|
await message.answer(
|
|
"<b>🔷 Управление - CryptoBot</b>",
|
|
reply_markup=await payment_cryptobot_finl(),
|
|
)
|
|
|
|
|
|
# Управление - 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):
|
|
await state.clear()
|
|
|
|
await message.answer(
|
|
"<b>⭐️ Управление - Звёзды</b>",
|
|
reply_markup=await payment_stars_finl(),
|
|
)
|
|
|
|
|
|
################################################################################
|
|
################################### CRYPTOBOT ##################################
|
|
# Баланс - CryptoBot
|
|
@router.callback_query(F.data == "payment_cryptobot_balance")
|
|
async def payments_cryptobot_balance(
|
|
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
|
):
|
|
response = await (
|
|
await CryptobotAPI.connect(
|
|
bot=bot,
|
|
arSession=arSession,
|
|
update=call,
|
|
skipping_error=True,
|
|
)
|
|
).balance()
|
|
|
|
await call.message.answer(
|
|
response,
|
|
reply_markup=close_finl(),
|
|
)
|
|
|
|
|
|
# Информация - CryptoBot
|
|
@router.callback_query(F.data == "payment_cryptobot_check")
|
|
async def payments_cryptobot_check(
|
|
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
|
):
|
|
status, response = await (
|
|
await CryptobotAPI.connect(
|
|
bot=bot,
|
|
arSession=arSession,
|
|
update=call,
|
|
skipping_error=True,
|
|
)
|
|
).check()
|
|
|
|
await call.message.answer(
|
|
response,
|
|
reply_markup=close_finl(),
|
|
)
|
|
|
|
|
|
# Изменение - CryptoBot
|
|
@router.callback_query(F.data == "payment_cryptobot_edit")
|
|
async def payments_cryptobot_edit(
|
|
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
|
):
|
|
await state.set_state("here_cryptobot_token")
|
|
await call.message.edit_text(
|
|
ded(f"""
|
|
<b>🔷 Изменение @CryptoBot кошелька - <a href='https://teletype.in/@djimbox/djimboshop-cryptobot'>Инструкция</a></b>
|
|
➖➖➖➖➖➖➖➖➖➖
|
|
▪️ Создайте Приложение в "Crypto Pay" и отправьте токен
|
|
"""),
|
|
disable_web_page_preview=True,
|
|
)
|
|
|
|
|
|
# Выключатель - CryptoBot
|
|
@router.callback_query(F.data.startswith("payment_cryptobot_status:"))
|
|
async def payments_cryptobot_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.cryptobot_token == "None":
|
|
return await call.answer(
|
|
"❌ Токен данной платежной системы не был добавлен", True
|
|
)
|
|
|
|
await Paymentsx().update(status_cryptobot=get_status)
|
|
|
|
await call.message.edit_text(
|
|
"<b>🔷 Управление - CryptoBot</b>",
|
|
reply_markup=await payment_cryptobot_finl(),
|
|
)
|
|
|
|
|
|
############################## ПРИНЯТИЕ CRYPTOBOT ##############################
|
|
# Принятие токена Cryptobot
|
|
@router.message(StateFilter("here_cryptobot_token"))
|
|
async def payments_cryptobot_get(
|
|
message: Message, bot: Bot, state: FSM, arSession: ARS
|
|
):
|
|
get_token = message.text
|
|
|
|
await state.clear()
|
|
|
|
cache_message = await message.answer(
|
|
"<b>🔷 Проверка введённых CryptoBot данных... 🔄</b>"
|
|
)
|
|
|
|
status, response = await (
|
|
await CryptobotAPI.connect(
|
|
bot=bot,
|
|
arSession=arSession,
|
|
update=message,
|
|
skipping_error=True,
|
|
token=get_token,
|
|
)
|
|
).check()
|
|
|
|
if status:
|
|
await Paymentsx().update(cryptobot_token=get_token)
|
|
await cache_message.edit_text(
|
|
"<b>🔷 CryptoBot кошелёк был успешно изменён ✅</b>"
|
|
)
|
|
else:
|
|
await cache_message.edit_text(
|
|
"<b>🔷 Не удалось изменить CryptoBot кошелёк ❌</b>"
|
|
)
|
|
|
|
await message.answer(
|
|
"<b>🔷 Управление - CryptoBot</b>",
|
|
reply_markup=await payment_cryptobot_finl(),
|
|
)
|
|
|
|
|
|
################################################################################
|
|
################################### 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(),
|
|
)
|
|
|
|
|
|
################################################################################
|
|
#################################### ЗВЁЗДЫ ####################################
|
|
# Баланс - Звёзды
|
|
@router.callback_query(F.data == "payment_stars_balance")
|
|
async def payments_stars_balance(
|
|
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
|
):
|
|
response = await (
|
|
await StarsAPI.connect(
|
|
bot=bot,
|
|
arSession=arSession,
|
|
update=call,
|
|
skipping_error=True,
|
|
)
|
|
).balance()
|
|
|
|
await call.message.answer(
|
|
response,
|
|
reply_markup=close_finl(),
|
|
)
|
|
|
|
|
|
# Информация - Звёзды
|
|
@router.callback_query(F.data == "payment_stars_check")
|
|
async def payments_stars_check(
|
|
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
|
):
|
|
status, response = await (
|
|
await StarsAPI.connect(
|
|
bot=bot,
|
|
arSession=arSession,
|
|
update=call,
|
|
skipping_error=True,
|
|
)
|
|
).check()
|
|
|
|
await call.message.answer(
|
|
response,
|
|
reply_markup=close_finl(),
|
|
)
|
|
|
|
|
|
# Изменение - Звёзды
|
|
@router.callback_query(F.data == "payment_stars_edit")
|
|
async def payments_stars_edit(
|
|
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
|
):
|
|
get_payments = await Paymentsx().get()
|
|
|
|
await state.set_state("here_stars_course")
|
|
await call.message.edit_text(
|
|
ded(f"""
|
|
<b>⭐️ Изменение курса Telegram Stars</b>
|
|
➖➖➖➖➖➖➖➖➖➖
|
|
▪️ Текущий курс: <code>1 ⭐️ = {get_payments.stars_course}₽</code>
|
|
▪️ Отправьте новый курс в рублях за одну звезду
|
|
"""),
|
|
disable_web_page_preview=True,
|
|
)
|
|
|
|
|
|
# Выключатель - Звёзды
|
|
@router.callback_query(F.data.startswith("payment_stars_status:"))
|
|
async def payments_stars_status(
|
|
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
|
):
|
|
get_status = call.data.split(":")[1]
|
|
|
|
await Paymentsx().update(status_stars=get_status)
|
|
|
|
await call.message.edit_text(
|
|
"<b>⭐️ Управление - Звёзды</b>",
|
|
reply_markup=await payment_stars_finl(),
|
|
)
|
|
|
|
|
|
############################# ПРИНЯТИЕ КУРСА ЗВЁЗД #############################
|
|
# Принятие курса Telegram Stars
|
|
@router.message(StateFilter("here_stars_course"))
|
|
async def payments_stars_course_get(
|
|
message: Message, bot: Bot, state: FSM, arSession: ARS
|
|
):
|
|
if not is_number(message.text):
|
|
return await message.answer(
|
|
"<b>❌ Введите число. Например: <code>1.5</code></b>"
|
|
)
|
|
|
|
stars_course = float(to_number(message.text))
|
|
|
|
if stars_course <= 0:
|
|
return await message.answer("<b>❌ Курс должен быть больше нуля</b>")
|
|
|
|
await Paymentsx().update(stars_course=stars_course)
|
|
await state.clear()
|
|
|
|
await message.answer(
|
|
f"<b>⭐️ Курс Telegram Stars изменён: <code>1 ⭐️ = {stars_course}₽</code></b>",
|
|
)
|
|
|
|
await message.answer(
|
|
"<b>⭐️ Управление - Звёзды</b>",
|
|
reply_markup=await payment_stars_finl(),
|
|
)
|