ich würde gerne eine Nachricht in einem bestimmten zeitraum wieder automatisch erscheinen lassen sprich zb ein Insta link
wie muss ich das schreiben
dazu musst du dir eine neue Funktion erstellen und diese mit einem "timer" immer wieder selbst aufrufen
beispiel :
// wir definieren uns einen "zeitplan" auf englisch shedule" ( wie wir es nennen ist wie immer egal Hauptsache wir wissen was es ist ;D )
let shedule = {};
// die Timer Funktion ( wird allgemein gehalten so ist es möglich mehrere dinge über ein und die selbe Funktion laufen zu lassen )
// channel: string = der Kanal in dem die Nachricht gepostet werden soll
// message: string = die Nachricht die gesendet werden soll
// timer: int = die Wartezeit bis zur nächsten Nachricht ( in Millisekunden )
// type: string = um welchen Timer es sich handelt damit wir ihn neu setzen können
// auch hier spielt der Name der Funktion wieder keine große rolle Hauptsache wir erkennen was wir machen
//
const timedMessage = (channel, message, timer, type) => {
// reset timer ( fals die funktion vor Ablauf des Timers irgendwo anders aufgerufen wurde )
clearTimeout(schedule[type]);
// nachricht senden
client.say(channel, message);
// timer neu starten
shedule[type] = setTimeout(timedMessage (channel, message, timer, type), timer);
return;
}
// wir starten den Timer
// ( Achtung ein von Twitch NICHT bestätigter Chat bot kann/darf maximal
// -- als normaler User 20 Nachrichten in 30 Sekunden ...
// -- als mod 100 Nachrichten in 30 Sekunden ...
// schicken
// mit setTimeout lassen wir das programm X millisekunden warten und rufen dann den angegebenen callback auf
// setTimeout(callback, timer)
// das speichern wir uns der "zeitplan" variable ( in unserem fall ein object ) damit wir damit in der funktion arbeiten können
//nun müssen wir nur noch die timer starten
// kanalName muss natürlich der name des kanals sein in dessen chat gepostet werden soll
shedule.instaLink = setTimeout(timedMessage('KanalName', 'hier mein instalink <link>', 120000, 'instaLink'), 120000); // alle 2 minuten erster aufruf nach 2 minuten
shedule.followReminder = setTimeout(timedMessage('KanalName', 'euch gefällt was ihr hier seht lasst doch ein follow da und verpasst nichts mehr', 240000, 'followReminder'), 1800000); // alle 4 minuten erster aufruf erst nach 30 minuten
//[...]
//[...]
Alles anzeigen
nicht getestet aber nutze ich eigentlich immer so sollten fehler drin sein gib bescheid
und wie kann ich in einem Befehlt die aufrufe zusammen rechnen lassen das es in Twicht-chat heißt,
!comloben ist der befehlt
und schreiben soll er
Support ist kein Mord - Macht weiter so ihr seid Mega, das fanden auch schon 450 user
zb so das sich jeder Aufruf Addiert
im normal fall müsste man dafür eine datenbank anlegen ( wir können da es sich ja um einen kleinen bot handelt hier auch einfach mit einer textdatei als "datenspeicher" arbeiten ) da sich sonst die zahl jedes mal wenn man den bot neu startet resetten würde ... das fällt jetzt schon aber nicht mehr unter "anfänger tutorial" und ist etwas fortgeschrittener deswegen stelle ich dir die datenbank.js fertig zur Verfügung und gehe nicht weiter darauf ein ( ich habe so viel wie möglich kommentiert ) database.js.zip ( diese einfach mit in das stammverzeichniss packen )
das ganze nutzt du wie folgt
am anfang deiner commands.js datei schreibst du folgendes
const database = require('./database.js');
in deinem command kannst du dann daten aus der Datenbank auslesen / schreiben / addieren oder subtrahieren ( das sind alle funktionen die derzeit in der database.js vorhanden sind )
ich führe hier alle Funktionen in einzelne commands auf damit du siehst was es macht
case 'inccount': // addiert 1 zum counter ( das maximum ist optional )
const tableName = 'counter'; // der name der "tabelle" auf die zugriffen werden soll ( das ermöglicht es dir auch command übergreifend auf daten zu zu greifen und diese zu maniplieren aber jedes command hat seine eigenen daten )
//database.get(tabelle, key, value, <max>);
let count = await database.increase(tableName, 'count', 1, 60); // erhöt den wert 'count' um value X und speichert diesen ab ( in diesem fall ist X = 1 ) mit einem maximum von 60
client.say(channel, 'der counter wurde um eins erhöt und ist nun' + count);
break;
case 'deccount': // suptrahiert 1 vom counter ( das minimumist optional )
const tableName = 'counter'; // der name der "tabelle" auf die zugriffen werden soll ( das ermöglicht es dir auch command übergreifend auf daten zu zu greifen und diese zu maniplieren aber jedes command hat seine eigenen daten )
//database.get(tabelle, key, value, <min>);
let count = await database.decrease(tableName, 'count', 1, 0); // erhöt den wert 'count' um value X und speichert diesen ab ( in diesem fall ist X = 1 ) mit einem minimum von 0
client.say(channel, 'dem counter wurde eins abgezogen und ist nun' + count);
break;
case 'setcount': // setzt den wert von counter
const tableName = 'counter'; // der name der "tabelle" auf die zugriffen werden soll ( das ermöglicht es dir auch command übergreifend auf daten zu zu greifen und diese zu maniplieren aber jedes command hat seine eigenen daten )
//database.get(tabelle, key, value);
let count = await database.set(tableName, 'count', parseInt(args[0])); // setzt den wert auf X ( X = argument 0 ) //in dem fall eine zahl das kann alles sein
client.say(channel, 'der counter wurde auf' + count + 'gesetzt');
break;
case 'getcount': // gibt den counter wert zurück
const tableName = 'counter'; // der name der "tabelle" auf die zugriffen werden soll ( das ermöglicht es dir auch command übergreifend auf daten zu zu greifen und diese zu maniplieren aber jedes command hat seine eigenen daten )
//database.get(tabelle, key, default);
let count = await database.get(tableName, 'count', 0); // holt den count wert aus der tabelle oder gibt den default wert zurück wenn es noch nie gespeichert wurde ( in diesem fall 0 )
client.say(channel, 'der aktuell counter ist ' + count);
break;
Alles anzeigen
erst wenn du mit database.set infos speicherst ( bei increase und decrease wird set ausgeführt ! ) wird die Datenbank auch gespeichert du hast dann eine neue Datei namens database.json in deinem stammverzeichniss
ich hoffe es hilft dir weiter