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