Spaces:
Sleeping
Sleeping
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!"}}) |