Private
Public Access
forked from FOSS/AutoShop-Djimbo-Simple
feat(referral): add referral system with withdrawals
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
# - *- coding: utf- 8 - *-
|
||||
from math import isfinite
|
||||
|
||||
from aiogram import Router, Bot, F
|
||||
from aiogram.filters import StateFilter
|
||||
from aiogram.types import CallbackQuery, Message
|
||||
|
||||
from tgbot.database import Settingsx, Userx
|
||||
from tgbot.keyboards.inline_admin import settings_status_finl, settings_finl
|
||||
from tgbot.utils.const_functions import ded
|
||||
from tgbot.utils.const_functions import ded, is_number, to_number
|
||||
from tgbot.utils.misc.bot_logging import bot_logger
|
||||
from tgbot.utils.misc.bot_models import FSM, ARS
|
||||
from tgbot.utils.misc_functions import send_admins, insert_tags
|
||||
@@ -116,6 +118,31 @@ async def settings_status_refill(
|
||||
await call.message.edit_reply_markup(reply_markup=await settings_status_finl())
|
||||
|
||||
|
||||
# Включение/выключение реферальной системы
|
||||
@router.callback_query(F.data.startswith("settings_status_referral:"))
|
||||
async def settings_status_referral(
|
||||
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
||||
):
|
||||
get_status = call.data.split(":")[1]
|
||||
|
||||
get_user = await Userx().get_required(user_id=call.from_user.id)
|
||||
await Settingsx().update(status_referral=get_status)
|
||||
|
||||
if get_status == "True":
|
||||
send_text = "🟢 Включил реферальную систему в боте"
|
||||
else:
|
||||
send_text = "🔴 Выключил реферальную систему в боте"
|
||||
|
||||
await send_admins(
|
||||
bot,
|
||||
f"👤 Администратор <a href='tg://user?id={get_user.user_id}'>{get_user.user_name}</a>\n"
|
||||
f"{send_text}",
|
||||
not_me=get_user.user_id,
|
||||
)
|
||||
|
||||
await call.message.edit_reply_markup(reply_markup=await settings_status_finl())
|
||||
|
||||
|
||||
# Включение/выключение уведомлений о покупках
|
||||
@router.callback_query(F.data.startswith("settings_notification_buy:"))
|
||||
async def settings_notification_buy(
|
||||
@@ -267,6 +294,72 @@ async def settings_faq_get(message: Message, bot: Bot, state: FSM, arSession: AR
|
||||
|
||||
|
||||
# Принятие поддержки
|
||||
@router.callback_query(F.data == "settings_edit_referral_bonus")
|
||||
async def settings_edit_referral_bonus(
|
||||
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
||||
):
|
||||
await state.clear()
|
||||
await state.set_state("here_settings_referral_bonus")
|
||||
await call.message.edit_text(
|
||||
"<b>🤝 Введите фиксированный бонус за приглашение в рублях</b>"
|
||||
)
|
||||
|
||||
|
||||
@router.callback_query(F.data == "settings_edit_referral_percent")
|
||||
async def settings_edit_referral_percent(
|
||||
call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS
|
||||
):
|
||||
await state.clear()
|
||||
await state.set_state("here_settings_referral_percent")
|
||||
await call.message.edit_text(
|
||||
"<b>📈 Введите процент дохода с пополнений от 0 до 100</b>"
|
||||
)
|
||||
|
||||
|
||||
@router.message(F.text, StateFilter("here_settings_referral_bonus"))
|
||||
async def settings_referral_bonus_get(
|
||||
message: Message, bot: Bot, state: FSM, arSession: ARS
|
||||
):
|
||||
if not is_number(message.text):
|
||||
return await message.answer(
|
||||
"<b>❌ Введите неотрицательное число в рублях</b>"
|
||||
)
|
||||
|
||||
referral_bonus = float(to_number(message.text))
|
||||
|
||||
if not isfinite(referral_bonus) or referral_bonus < 0:
|
||||
return await message.answer(
|
||||
"<b>❌ Введите неотрицательное число в рублях</b>"
|
||||
)
|
||||
|
||||
await Settingsx().update(referral_bonus_rub=round(referral_bonus, 2))
|
||||
await state.clear()
|
||||
await message.answer(
|
||||
"<b>🖍 Изменение данных бота</b>",
|
||||
reply_markup=await settings_finl(),
|
||||
)
|
||||
|
||||
|
||||
@router.message(F.text, StateFilter("here_settings_referral_percent"))
|
||||
async def settings_referral_percent_get(
|
||||
message: Message, bot: Bot, state: FSM, arSession: ARS
|
||||
):
|
||||
if not is_number(message.text):
|
||||
return await message.answer("<b>❌ Введите число от 0 до 100</b>")
|
||||
|
||||
referral_percent = float(to_number(message.text))
|
||||
|
||||
if not isfinite(referral_percent) or not 0 <= referral_percent <= 100:
|
||||
return await message.answer("<b>❌ Введите число от 0 до 100</b>")
|
||||
|
||||
await Settingsx().update(referral_refill_percent=round(referral_percent, 2))
|
||||
await state.clear()
|
||||
await message.answer(
|
||||
"<b>🖍 Изменение данных бота</b>",
|
||||
reply_markup=await settings_finl(),
|
||||
)
|
||||
|
||||
|
||||
@router.message(F.text, StateFilter("here_settings_support"))
|
||||
async def settings_support_get(message: Message, bot: Bot, state: FSM, arSession: ARS):
|
||||
get_support = message.text
|
||||
|
||||
Reference in New Issue
Block a user