Aqui está um exemplo de código para um sistema de **bônus** no estilo de uma casa de apostas como a Superbet, com funcionalidades básicas:

“`python
import random
import json
from datetime import datetime, timedelta

class BonusSystem:
def __init__(self):
self.bonuses = {
“welcome”: {
“name”: “Bônus de Boas-Vindas”,
“type”: “match”,
“percentage”: 100,
“max_amount”: 500.00,
“min_deposit”: 20.00,
“wagering_requirement”: 10,
“active”: True
},
“reload”: {
“name”: “Bônus de Recarga”,
“type”: “match”,
“percentage”: 50,
“max_amount”: 200.00,
“min_deposit”: 10.00,
“wagering_requirement”: 8,
“active”: True
},
“freebet”: {
“name”: “Free Bet”,
“type”: “freebet”,
“amount”: 25.00,
“wagering_requirement”: 1,
“active”: True
}
}

self.user_bonuses = {}

def generate_bonus_code(self, bonus_type):
“””Gera um código de bônus único”””
prefix = {
“welcome”: “WELCOME”,
“reload”: “RELOAD”,
“freebet”: “FREEBET”
}

code = f”{prefix.get(bonus_type, ‘BONUS’)}-{random.randint(1000, 9999)}-{random.randint(1000, 9999)}”
return code

def award_welcome_bonus(self, user_id, deposit_amount):
“””Concede bônus de boas-vindas”””
if not self.bonuses[“welcome”][“active”]:
return {“success”: False, “message”: “Bônus indisponível”}

if deposit_amount < self.bonuses["welcome"]["min_deposit"]: return {"success": False, "message": f"Depósito mínimo: R${self.bonuses['welcome']['min_deposit']}"} bonus_amount = min(deposit_amount * (self.bonuses["welcome"]["percentage"] / 100), self.bonuses["welcome"]["max_amount"]) bonus_code = self.generate_bonus_code("welcome") expiry_date = datetime.now() + timedelta(days=30) if user_id not in self.user_bonuses: self.user_bonuses[user_id] = [] bonus_data = { "code": bonus_code, "type": "welcome", "amount": bonus_amount, "original_deposit": deposit_amount, "wagering_requirement": self.bonuses["welcome"]["wagering_requirement"], "wagering_progress": 0, "expiry_date": expiry_date.strftime("%Y-%m-%d"), "status": "active", "awarded_date": datetime.now().strftime("%Y-%m-%d %H:%M:%S") } self.user_bonuses[user_id].append(bonus_data) return { "success": True, "message": f"Bônus de R${bonus_amount:.2f} concedido!", "code": bonus_code, "amount": bonus_amount, "expiry": expiry_date.strftime("%d/%m/%Y") } def award_freebet(self, user_id, promotion_name="Promoção Especial"): """Concede Free Bet promocional""" if not self.bonuses["freebet"]["active"]: return {"success": False, "message": "Promoção indisponível"} bonus_code = self.generate_bonus_code("freebet") expiry_date = datetime.now() + timedelta(days=7) if user_id not in self.user_bonuses: self.user_bonuses[user_id] = [] bonus_data = { "code": bonus_code, "type": "freebet", "amount": self.bonuses["freebet"]["amount"], "promotion": promotion_name, "wagering_requirement": self.bonuses["freebet"]["wagering_requirement"], "expiry_date": expiry_date.strftime("%Y-%m-%d"), "status": "active", "awarded_date": datetime.now().strftime("%Y-%m-%d %H:%M:%S") } self.user_bonuses[user_id].append(bonus_data) return { "success": True, "message": f"Free Bet de R${self.bonuses['freebet']['amount']:.2f} concedido!", "code": bonus_code, "amount": self.bonuses["freebet"]["amount"], "expiry": expiry_date.strftime("%d/%m/%Y") } def check_wagering(self, user_id, bet_amount): """Atualiza requisitos de rollover""" if user_id not in self.user_bonuses: return for bonus in self.user_bonuses[user_id]: if bonus["status"] == "active" and bonus["type"] != "freebet": bonus["wagering_progress"] += bet_amount required_amount = bonus["amount"] * bonus["wagering_requirement"] if bonus["wagering_progress"] >= required_amount:
bonus[“status”] = “completed”
print(f”Bônus {bonus[‘code’]} completou os requisitos de apostas!”)

def get_user_bonuses(self, user_id):
“””Retorna todos os bônus do usuário”””
return self.user_bonuses.get(user_id, [])

def use_bonus_code(self, user_id, bonus_code):
“””Usa um código de bônus específico”””

codigo bônus superbet

if user_id not in self.user_bonuses:
return {“success”: False, “message”: “Nenhum bônus encontrado”}

for bonus in self.user_bonuses[user_id]:
if bonus[“code”] == bonus_code and bonus[“status”] == “active”:
expiry_date = datetime.strptime(bonus[“expiry_date”], “%Y-%m-%d”)
if datetime.now() > expiry_date:
bonus[“status”] = “expired”
return {“success”: False, “message”: “Bônus expirado”}

return {
“success”: True,
“message”: f”Bônus de R${bonus[‘amount’]:.2f} aplicado!”,
“amount”: bonus[“amount”],
“type”: bonus[“type”]
}

return {“success”: False, “message”: “Código inválido ou já utilizado”}

# Exemplo de uso
if __name__ == “__main__”:
system = BonusSystem()

# Simulando um novo usuário
user_id = “user_12345”

print(“=== SISTEMA DE BÔNUS SUPERBET ===\n”)

# Bônus de boas-vindas
print(“1. Bônus de Boas-Vindas:”)
result = system.award_welcome_bonus(user_id, 300.00)
if result[“success”]:
print(f” ✅ {result[‘message’]}”)
print(f” Código: {result[‘code’]}”)
print(f” Expira em: {result[‘expiry’]}”)
print()

# Free Bet promocional
print(“2. Free Bet Promocional:”)
result = system.award_freebet(user_id, “Fim de Semana Especial”)
if result[“success”]:
print(f” 🎁 {result[‘message’]}”)
print(f” Código: {result[‘code’]}”)
print(f” Expira em: {result[‘expiry’]}”)
print()

# Listar bônus do usuário
print(“3. Meus Bônus:”)
bonuses = system.get_user_bonuses(user_id)
for i, bonus in enumerate(bonuses, 1):
print(f” {i}. {bonus[‘code’]} – R${bonus[‘amount’]:.2f}”)
print(f” Status: {bonus[‘status’]}”)
print(f” Expira: {bonus[‘expiry_date’]}”)
print()

# Simular apostas para cumprir rollover
print(“4. Simulando apostas para rollover:”)
system.check_wagering(user_id, 1500.00)

# Verificar bônus atualizados
print(“\n5. Status atualizado dos bônus:”)
bonuses = system.get_user_bonuses(user_id)
for bonus in bonuses:
if bonus[“type”] != “freebet”:
progress = min(100, (bonus[“wagering_progress”] /
(bonus[“amount”] * bonus[“wagering_requirement”])) * 100)
print(f” {bonus[‘code’]}: {progress:.1f}% do rollover completo”)
“`

Este código inclui:

## **Funcionalidades Implementadas:**

1. **Tipos de Bônus:**
– Bônus de Boas-Vindas (match bonus)
– Bônus de Recarga
– Free Bets promocionais

2. **Características:**
– Códigos únicos de bônus
– Validade limitada
– Requisitos de rollover (apostas)
– Controle de status (ativo/completo/expirado)

3. **Métodos Principais:**
– `award_welcome_bonus()`: Concede bônus inicial
– `award_freebet()`: Concede free bets
– `check_wagering()`: Controla requisitos de apostas
– `use_bonus_code()`: Utiliza um bônus

## **Para Expandir o Sistema:**

“`python
# Exemplos de melhorias:
class EnhancedBonusSystem(BonusSystem):
def add_cashback_bonus(self, user_id, loss_amount):
“””Bônus de cashback baseado em perdas”””
cashback_rate = 0.10 # 10% de cashback
cashback = loss_amount * cashback_rate

# Implementar lógica de cashback
pass

def loyalty_program(self, user_id, bets_placed):
“””Programa de fidelidade”””
if bets_placed > 100:
return self.award_freebet(user_id, “Recompensa de Fidelidade”)

def birthday_bonus(self, user_id):
“””Bônus de aniversário”””
# Verificar data de nascimento do usuário
pass
“`

## **Recursos de Segurança Adicionais:**

“`python
class SecureBonusSystem(BonusSystem):
def __init__(self):
super().__init__()
self.anti_fraud_checks = []

def validate_bonus_eligibility(self, user_id, bonus_type):
“””Valida se usuário pode receber bônus”””
checks = [
self.check_age_requirement(user_id),
self.check_self_exclusion(user_id),
self.check_bonus_abuse(user_id),
self.check_geolocation(user_id)
]
return all(checks)

def check_bonus_abuse(self, user_id):
“””Prevenção a abuso de bônus”””
# Implementar detecção de multi-contas, arbitragem, etc.
return True
“`

Este sistema pode ser integrado com:
– Banco de dados para persistência
– Sistema de autenticação de usuários
– Gateway de pagamentos
– Plataforma de apostas esportivas
– Sistema de notificações (email/SMS)

Lembre-se de que sistemas reais de bônus exigem:
– Conformidade regulatória
– Auditoria completa
– Prevenção a fraudes
– Termos e condições claros
– Limites de responsabilidade

Deseja que eu expanda alguma funcionalidade específica ou adicione mais tipos de bônus?

Share this post

Related posts