File size: 5,913 Bytes
adfb3b5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
from flask import jsonify
import logging

logger = logging.getLogger(__name__)

def ping_command(data):
    """Handles the '/ping' command"""
    if data.get("type") == 1:
        logger.info("Responding to ping verification")
        return jsonify({"type": 1})

def settings_command(data):
    """Handles the '/settings' command"""
    if data.get("type") == 2:
        command = data.get("data", {}).get("name")
        logger.info(f"Received command: {command}")
        return jsonify({
            "type": 4,
            "data": {
                "content": "✅ Bot ist aktiv und verifiziert!"
            }
        })


## a) /balance user credits stand
## 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.
    def balance_command(user_id):
    # Angenommen, die Punkte werden in einer verschlüsselten Datenbank gespeichert
    user_data = get_user_data(user_id)  # Hier wird die Benutzer-ID verwendet, nicht der Name
    credits = user_data.get('credits', 0)
    coins = user_data.get('coins', 0)
    return jsonify({
        "type": 4,
        "data": {
            "content": f"Dein aktueller Kontostand: {credits} Credits, {coins} Coins"
        }
    })

# b) /send Money to user
# Dieser Befehl sendet eine bestimmte Menge Credits an einen anderen Benutzer. Hierbei müssen Sicherheitsvorkehrungen getroffen werden, um Missbrauch zu vermeiden, z. B.
# indem Transaktionen nur über den Bot und unter bestimmten Bedingungen durchgeführt werden.
def send_money_command(from_user_id, to_user_id, amount):
    if amount <= 0:
        return jsonify({"type": 4, "data": {"content": "Ungültiger Betrag!"}})
    
    # Überprüfe, ob der Absender genug Credits hat
    from_user_data = get_user_data(from_user_id)
    if from_user_data['credits'] < amount:
        return jsonify({"type": 4, "data": {"content": "Nicht genug Credits!"}})
    
    # Transaktion durchführen
    update_user_data(from_user_id, {'credits': from_user_data['credits'] - amount})
    to_user_data = get_user_data(to_user_id)
    update_user_data(to_user_id, {'credits': to_user_data['credits'] + amount})
    
    return jsonify({"type": 4, "data": {"content": f"Erfolgreich {amount} Credits an den Benutzer gesendet!"}})
    
# c) /daily (Tägliche Belohnung)
# 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.
import datetime

def daily_reward(user_id):
    # Holen Sie sich das letzte Belohnungsdatum des Benutzers
    user_data = get_user_data(user_id)
    last_claimed = user_data.get('last_claimed', None)
    
    if last_claimed:
        # Überprüfen, ob der Benutzer heute schon seine Belohnung erhalten hat
        if last_claimed.date() == datetime.datetime.now().date():
            return jsonify({"type": 4, "data": {"content": "Du hast bereits deine tägliche Belohnung erhalten!"}})
    
    # Tägliche Belohnung vergeben
    new_credits = user_data.get('credits', 0) + 100  # Beispiel für eine tägliche Belohnung
    update_user_data(user_id, {'credits': new_credits, 'last_claimed': datetime.datetime.now()})
    
    return jsonify({"type": 4, "data": {"content": "Du hast deine tägliche Belohnung erhalten: 100 Credits!"}})

# d) /fish (Fischen)
# 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. 
# Wenn der Benutzer Pech hat, könnte er Credits verlieren. Hier ein Beispiel, wie das Fischen implementiert werden könnte:
import random

def fish_command(user_id, location):
    # Überprüfe, ob der Benutzer genug Credits für das Fischen hat
    user_data = get_user_data(user_id)
    if user_data['credits'] < 10:  # Beispiel: Fischen kostet 10 Credits
        return jsonify({"type": 4, "data": {"content": "Nicht genug Credits zum Fischen!"}})
    
    # Wähle das Ergebnis basierend auf dem Ort
    if location == "river":
        chance = random.randint(1, 100)
        if chance <= 70:  # 70% Chance, einen kleinen Fisch zu fangen
            reward = 20  # Der Benutzer verdient 20 Credits
        else:
            reward = -10  # 30% Chance, einen Unfall zu haben und Credits zu verlieren
    elif location == "lake":
        chance = random.randint(1, 100)
        if chance <= 50:  # 50% Chance, einen großen Fisch zu fangen
            reward = 50  # Der Benutzer verdient 50 Credits
        else:
            reward = -30  # 50% Chance auf einen Unfall und Verlust von Credits
    
    # Fische und aktualisiere die Credits
    new_credits = user_data.get('credits', 0) + reward
    update_user_data(user_id, {'credits': new_credits})
    
    return jsonify({
        "type": 4,
        "data": {"content": f"Du hast {reward} Credits gefangen!" if reward >= 0 else f"Du hast {abs(reward)} Credits verloren!"}
    })

# Der Shop
def shop_command(user_id, item):
    # Shop-Preise definieren
    items = {
        "avatar1": 100,
        "avatar2": 150,
        "role1": 200,
        "exclusive_channel_access": 300
    }
    
    if item not in items:
        return jsonify({"type": 4, "data": {"content": "Ungültiger Artikel!"}})
    
    item_price = items[item]
    user_data = get_user_data(user_id)
    
    # Überprüfen, ob der Benutzer genug Credits hat
    if user_data['credits'] < item_price:
        return jsonify({"type": 4, "data": {"content": "Nicht genug Credits für diesen Artikel!"}})
    
    # Artikel kaufen
    update_user_data(user_id, {'credits': user_data['credits'] - item_price})
    
    # Artikel freischalten (z. B. Rolle oder Avatar)
    unlock_item(user_id, item)
    
    return jsonify({"type": 4, "data": {"content": f"Du hast erfolgreich {item} gekauft!"}})