Alibrown commited on
Commit
1a5fbd2
·
verified ·
1 Parent(s): 197c89d

Create bank.py

Browse files
Files changed (1) hide show
  1. app/bank.py +101 -0
app/bank.py ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ from flask import jsonify
3
+ import logging
4
+ import datetime
5
+ import random
6
+
7
+ from datetime import datetime, timedelta
8
+
9
+ class BankAccount:
10
+ def __init__(self, user_id, balance=0.0, interest_rate=0.0):
11
+ """Initialisiert ein neues Bankkonto für den Benutzer."""
12
+ self.user_id = user_id
13
+ self.balance = balance
14
+ self.interest_rate = interest_rate # z.B. 0.05 für 5% Zinsen, -0.05 für -5% (negative Zinsen)
15
+ self.last_interest_time = datetime.now()
16
+
17
+ def deposit(self, amount):
18
+ """Funktion zum Einzahlen auf das Konto."""
19
+ if amount <= 0:
20
+ raise ValueError("Einzahlungsbetrag muss positiv sein.")
21
+ self.balance += amount
22
+ return self.balance
23
+
24
+ def withdraw(self, amount):
25
+ """Funktion zum Abheben vom Konto."""
26
+ if amount <= 0:
27
+ raise ValueError("Abhebungsbetrag muss positiv sein.")
28
+ if amount > self.balance:
29
+ raise ValueError("Nicht genügend Geld auf dem Konto.")
30
+ self.balance -= amount
31
+ return self.balance
32
+
33
+ def apply_interest(self):
34
+ """Berechnet die Zinsen und fügt sie dem Konto hinzu (positive oder negative Zinsen)."""
35
+ current_time = datetime.now()
36
+ time_difference = current_time - self.last_interest_time
37
+
38
+ # Zinsen werden z.B. täglich angewendet (kann angepasst werden)
39
+ if time_difference >= timedelta(days=1):
40
+ days_passed = time_difference.days
41
+ # Zinsen anwenden für jeden Tag, der seit der letzten Berechnung vergangen ist
42
+ for _ in range(days_passed):
43
+ self.balance += self.balance * self.interest_rate
44
+ self.last_interest_time = current_time
45
+ return self.balance
46
+
47
+ def get_balance(self):
48
+ """Gibt den aktuellen Kontostand zurück (nach Zinsberechnung)."""
49
+ self.apply_interest()
50
+ return self.balance
51
+
52
+
53
+ # Beispiel für die Verwendung der Klassen und Funktionen
54
+ #if __name__ == "__main__":
55
+ # Erstellen eines Kontos für einen Spieler mit 100 Einheiten und 5% Zinsen
56
+ # player_account = BankAccount(user_id=12345, balance=100.0, interest_rate=0.05)
57
+
58
+ # Einzahlung
59
+ # player_account.deposit(50)
60
+ # print(f"Neuer Kontostand nach Einzahlung: {player_account.get_balance()}")
61
+
62
+ # Abheben
63
+ # player_account.withdraw(30)
64
+ # print(f"Neuer Kontostand nach Abhebung: {player_account.get_balance()}")
65
+
66
+ # Zinsen anwenden (nur zur Demonstration, normalerweise täglich automatisch)
67
+ # player_account.apply_interest()
68
+ # print(f"Kontostand nach Zinsanwendung: {player_account.get_balance()}")
69
+
70
+ # b) /send Money to user
71
+ def send_money_command(from_user_id, to_user_id, amount):
72
+ if amount <= 0:
73
+ return jsonify({"type": 4, "data": {"content": "Ungültiger Betrag!"}})
74
+
75
+ # Überprüfe, ob der Absender genug Credits hat
76
+ from_user_data = get_user_data(from_user_id)
77
+ if from_user_data['credits'] < amount:
78
+ return jsonify({"type": 4, "data": {"content": "Nicht genug Credits!"}})
79
+
80
+ # Transaktion durchführen
81
+ update_user_data(from_user_id, {'credits': from_user_data['credits'] - amount})
82
+ to_user_data = get_user_data(to_user_id)
83
+ update_user_data(to_user_id, {'credits': to_user_data['credits'] + amount})
84
+
85
+ return jsonify({"type": 4, "data": {"content": f"Erfolgreich {amount} Credits an den Benutzer gesendet!"}})
86
+
87
+ # c) /daily (Tägliche Belohnung)
88
+ def daily_reward(user_id):
89
+ """Gives daily reward of 100 credits to the user"""
90
+ user_data = get_user_data(user_id)
91
+ last_claimed = user_data.get('last_claimed', None)
92
+
93
+ if last_claimed:
94
+ if last_claimed.date() == datetime.datetime.now().date():
95
+ return jsonify({"type": 4, "data": {"content": "Du hast bereits deine tägliche Belohnung erhalten!"}})
96
+
97
+ # Tägliche Belohnung vergeben
98
+ new_credits = user_data.get('credits', 0) + 100 # Beispiel für eine tägliche Belohnung
99
+ update_user_data(user_id, {'credits': new_credits, 'last_claimed': datetime.datetime.now()})
100
+
101
+ return jsonify({"type": 4, "data": {"content": "Du hast deine tägliche Belohnung erhalten: 100 Credits!"}})