Wie kann ich commands in discord python für kurze Zeit stoppen, damit Nutzer sie z.B. erst wieder nach 10 Sekundenverwenden können?
Hallo! Ich habe mein eigenes coin system programmiert. Es gibt ein command, mir dem man sich 100 coins geben kann. Allerdings will ich nur, dass man diesen Command nur alle paar Minuten verwenden kann, da man ja so sonnst viel zu schnell an coins kommt. Kann mir da vielleicht jemand weiterhelfen, wie ich da eine Pause einbauen kann?
1 Antwort
Speichere in ein Dictionary jeden User der den Command benutzt hat, und dazu den zugehörigen Zeitpunkt.
Wenn ein User den Coin-Command benutzt, schaust du, ob er im Dictionary ist, und wenn ja, wie weit die letzte Benutzung zurückliegt. Ist es länger als _ Sekunden/Minuten her, dann lässt du die Ausführung des Commands zu und überschreibst den Zeitpunkt im Dictionary zum neuen Zeitpunkt. Ist er noch nicht im Dictionary, dann legst du einen neuen Eintrag an.
Hier eine kleine Demo:
import time
used_command = {}
min_delay = 5 # Mindestabstand in Sekunden
def use_command(userID):
last_used = used_command.get(userID)
curr_time = int(time.time())
if last_used and curr_time - last_used < min_delay: # Letzte Ausführung ist noch keine <min_delay> Sekunden her.
return # Command nicht ausführen.
used_command[userID] = curr_time # Andernfalls 'Letzte Ausführung' auf derzeitige Zeit setzen
# Hier dann der eigentliche Command (also 100 Coins geben):
print('User ' + userID + ' got 100 Coins.')
# Für Demo-Zwecke (einfach mal mehrmals hintereinander bestimmte Nummer eingeben):
while True:
user = input('User: ')
use_command(user)