discord-bot / app /commands.py
Alibrown's picture
Create commands.py
adfb3b5 verified
raw
history blame
5.91 kB
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!"}})