Alibrown commited on
Commit
adfb3b5
·
verified ·
1 Parent(s): dbdbb3d

Create commands.py

Browse files
Files changed (1) hide show
  1. app/commands.py +138 -0
app/commands.py ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import jsonify
2
+ import logging
3
+
4
+ logger = logging.getLogger(__name__)
5
+
6
+ def ping_command(data):
7
+ """Handles the '/ping' command"""
8
+ if data.get("type") == 1:
9
+ logger.info("Responding to ping verification")
10
+ return jsonify({"type": 1})
11
+
12
+ def settings_command(data):
13
+ """Handles the '/settings' command"""
14
+ if data.get("type") == 2:
15
+ command = data.get("data", {}).get("name")
16
+ logger.info(f"Received command: {command}")
17
+ return jsonify({
18
+ "type": 4,
19
+ "data": {
20
+ "content": "✅ Bot ist aktiv und verifiziert!"
21
+ }
22
+ })
23
+
24
+
25
+ ## a) /balance user credits stand
26
+ ## Dieser Befehl gibt den aktuellen Stand der Credits und Coins des Benutzers zurück. Dabei wird nur die anonyme ID des Benutzers verwendet, um den Punktestand abzurufen.
27
+ def balance_command(user_id):
28
+ # Angenommen, die Punkte werden in einer verschlüsselten Datenbank gespeichert
29
+ user_data = get_user_data(user_id) # Hier wird die Benutzer-ID verwendet, nicht der Name
30
+ credits = user_data.get('credits', 0)
31
+ coins = user_data.get('coins', 0)
32
+ return jsonify({
33
+ "type": 4,
34
+ "data": {
35
+ "content": f"Dein aktueller Kontostand: {credits} Credits, {coins} Coins"
36
+ }
37
+ })
38
+
39
+ # b) /send Money to user
40
+ # Dieser Befehl sendet eine bestimmte Menge Credits an einen anderen Benutzer. Hierbei müssen Sicherheitsvorkehrungen getroffen werden, um Missbrauch zu vermeiden, z. B.
41
+ # indem Transaktionen nur über den Bot und unter bestimmten Bedingungen durchgeführt werden.
42
+ def send_money_command(from_user_id, to_user_id, amount):
43
+ if amount <= 0:
44
+ return jsonify({"type": 4, "data": {"content": "Ungültiger Betrag!"}})
45
+
46
+ # Überprüfe, ob der Absender genug Credits hat
47
+ from_user_data = get_user_data(from_user_id)
48
+ if from_user_data['credits'] < amount:
49
+ return jsonify({"type": 4, "data": {"content": "Nicht genug Credits!"}})
50
+
51
+ # Transaktion durchführen
52
+ update_user_data(from_user_id, {'credits': from_user_data['credits'] - amount})
53
+ to_user_data = get_user_data(to_user_id)
54
+ update_user_data(to_user_id, {'credits': to_user_data['credits'] + amount})
55
+
56
+ return jsonify({"type": 4, "data": {"content": f"Erfolgreich {amount} Credits an den Benutzer gesendet!"}})
57
+
58
+ # c) /daily (Tägliche Belohnung)
59
+ # Die tägliche Belohnung könnte beispielsweise 100 Credits pro Tag betragen. Eine Möglichkeit ist, den täglichen Bonus nur einmal pro Benutzer und Tag zu vergeben.
60
+ import datetime
61
+
62
+ def daily_reward(user_id):
63
+ # Holen Sie sich das letzte Belohnungsdatum des Benutzers
64
+ user_data = get_user_data(user_id)
65
+ last_claimed = user_data.get('last_claimed', None)
66
+
67
+ if last_claimed:
68
+ # Überprüfen, ob der Benutzer heute schon seine Belohnung erhalten hat
69
+ if last_claimed.date() == datetime.datetime.now().date():
70
+ return jsonify({"type": 4, "data": {"content": "Du hast bereits deine tägliche Belohnung erhalten!"}})
71
+
72
+ # Tägliche Belohnung vergeben
73
+ new_credits = user_data.get('credits', 0) + 100 # Beispiel für eine tägliche Belohnung
74
+ update_user_data(user_id, {'credits': new_credits, 'last_claimed': datetime.datetime.now()})
75
+
76
+ return jsonify({"type": 4, "data": {"content": "Du hast deine tägliche Belohnung erhalten: 100 Credits!"}})
77
+
78
+ # d) /fish (Fischen)
79
+ # Beim Fischen gibt es zwei Orte, z. B. einen See und einen Fluss. Der Fluss könnte weniger große, aber günstigere Fische bringen, während der See größere, aber gefährlichere Fische bietet.
80
+ # Wenn der Benutzer Pech hat, könnte er Credits verlieren. Hier ein Beispiel, wie das Fischen implementiert werden könnte:
81
+ import random
82
+
83
+ def fish_command(user_id, location):
84
+ # Überprüfe, ob der Benutzer genug Credits für das Fischen hat
85
+ user_data = get_user_data(user_id)
86
+ if user_data['credits'] < 10: # Beispiel: Fischen kostet 10 Credits
87
+ return jsonify({"type": 4, "data": {"content": "Nicht genug Credits zum Fischen!"}})
88
+
89
+ # Wähle das Ergebnis basierend auf dem Ort
90
+ if location == "river":
91
+ chance = random.randint(1, 100)
92
+ if chance <= 70: # 70% Chance, einen kleinen Fisch zu fangen
93
+ reward = 20 # Der Benutzer verdient 20 Credits
94
+ else:
95
+ reward = -10 # 30% Chance, einen Unfall zu haben und Credits zu verlieren
96
+ elif location == "lake":
97
+ chance = random.randint(1, 100)
98
+ if chance <= 50: # 50% Chance, einen großen Fisch zu fangen
99
+ reward = 50 # Der Benutzer verdient 50 Credits
100
+ else:
101
+ reward = -30 # 50% Chance auf einen Unfall und Verlust von Credits
102
+
103
+ # Fische und aktualisiere die Credits
104
+ new_credits = user_data.get('credits', 0) + reward
105
+ update_user_data(user_id, {'credits': new_credits})
106
+
107
+ return jsonify({
108
+ "type": 4,
109
+ "data": {"content": f"Du hast {reward} Credits gefangen!" if reward >= 0 else f"Du hast {abs(reward)} Credits verloren!"}
110
+ })
111
+
112
+ # Der Shop
113
+ def shop_command(user_id, item):
114
+ # Shop-Preise definieren
115
+ items = {
116
+ "avatar1": 100,
117
+ "avatar2": 150,
118
+ "role1": 200,
119
+ "exclusive_channel_access": 300
120
+ }
121
+
122
+ if item not in items:
123
+ return jsonify({"type": 4, "data": {"content": "Ungültiger Artikel!"}})
124
+
125
+ item_price = items[item]
126
+ user_data = get_user_data(user_id)
127
+
128
+ # Überprüfen, ob der Benutzer genug Credits hat
129
+ if user_data['credits'] < item_price:
130
+ return jsonify({"type": 4, "data": {"content": "Nicht genug Credits für diesen Artikel!"}})
131
+
132
+ # Artikel kaufen
133
+ update_user_data(user_id, {'credits': user_data['credits'] - item_price})
134
+
135
+ # Artikel freischalten (z. B. Rolle oder Avatar)
136
+ unlock_item(user_id, item)
137
+
138
+ return jsonify({"type": 4, "data": {"content": f"Du hast erfolgreich {item} gekauft!"}})