# - *- 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_stars_finl, ) from tgbot.services.api_cryptobot import CryptobotAPI 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( "🔷 Управление - CryptoBot", reply_markup=await payment_cryptobot_finl(), ) # Управление - Звёзды @router.message(F.text == "⭐️ Звёзды") async def payments_stars_open(message: Message, bot: Bot, state: FSM, arSession: ARS): await state.clear() await message.answer( "⭐️ Управление - Звёзды", 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""" 🔷 Изменение @CryptoBot кошелька - Инструкция ➖➖➖➖➖➖➖➖➖➖ ▪️ Создайте Приложение в "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( "🔷 Управление - CryptoBot", 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( "🔷 Проверка введённых CryptoBot данных... 🔄" ) 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( "🔷 CryptoBot кошелёк был успешно изменён ✅" ) else: await cache_message.edit_text( "🔷 Не удалось изменить CryptoBot кошелёк ❌" ) await message.answer( "🔷 Управление - CryptoBot", reply_markup=await payment_cryptobot_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""" ⭐️ Изменение курса Telegram Stars ➖➖➖➖➖➖➖➖➖➖ ▪️ Текущий курс: 1 ⭐️ = {get_payments.stars_course}₽ ▪️ Отправьте новый курс в рублях за одну звезду """), 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( "⭐️ Управление - Звёзды", 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( "❌ Введите число. Например: 1.5" ) stars_course = float(to_number(message.text)) if stars_course <= 0: return await message.answer("❌ Курс должен быть больше нуля") await Paymentsx().update(stars_course=stars_course) await state.clear() await message.answer( f"⭐️ Курс Telegram Stars изменён: 1 ⭐️ = {stars_course}₽", ) await message.answer( "⭐️ Управление - Звёзды", reply_markup=await payment_stars_finl(), )