2016-07-04 11 views
0

Also was ich versuche, ist ein "Cooldown" wie System für meinen Diskord Bot, habe ich versucht, mit einer Datenbank-Methode, here, die für mich nicht funktioniert.setTimeout für Client mit Befehl

Ich verwende das Paket discord.js.

Hier ist mein Code:

if (msg.content.startsWith("!point")) { 
    var usr = msg.content.split(" ").slice(1).join(" "); 
    if (!usr) { 
    bot.sendMessage(msg, "```Error: 1\n Reason: Please state a name.```"); 
    return; 
    } 
    if (usr == msg.author.username) { 
    bot.sendMessage(msg, "```Error: 3\n Reason: You're unable to point yourself.```"); 
    return; 
    } 
    if (!db["users"][usr]) { 
    db["users"][usr] = 0; 
    } 
    console.log(usr + " has " + db["users"][usr]); 
    db["users"][usr] += 1; 
    console.log(usr + " now has " + db["users"][usr]); 
    fs.writeFileSync('database.json', JSON.stringify(db)); 
    bot.sendMessage(msg, usr + " has received 1 point"); 
} 
+0

Sie nicht erwähnt, was ist Ihr Problem? – Iceman

+0

Mein Problem ist, dass ich keine Ahnung habe was ich tun soll .. – swagster

Antwort

0

Es sei denn, es ist sehr wichtig, dass die Abklingzeit einen Absturz überlebt, oder der Abkühlphase ist eine sehr lange Dauer ich mit den Tasten ein Objekt recomend schaffen, sind entweder Kanal oder Benutzer oder die Server-ID hängt davon ab, wofür das Ratenlimit gelten soll. Stellen Sie dann jedes Mal, wenn ein Befehl ausgeführt wird, diesen auf die aktuelle Zeit ein. So etwas wie

rateLimitObject[msg.author.id] = "current time";

Dann, wenn jemand einen Befehl läuft nur sicherstellen, dass die aktuelle Zeit größer ist als die Zeit in dem Objekt mit diesem Index um mehr als einen bestimmten Betrag. Wenn Sie nur Leute einfach davon abhalten wollen, den Befehl zu spammen, dann ist etwas, das dem in pvpcraft ähnlich ist, ideal. https://github.com/macdja38/pvpcraft/blob/master/middleware/rateLimits.js