Wie kann ich commands in discord python für kurze Zeit stoppen, damit Nutzer sie z.B. erst wieder nach 10 Sekundenverwenden können?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

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)
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

TomSeeland 
Fragesteller
 03.08.2021, 06:53

Ich danke ihnen vielmals

LG

1