Also habe ich einen Kik-Bot, an dem ich gerade arbeite, der die Tastatur benutzt, um Dinge vorzuschlagen, die der Benutzer dem Bot sagen möchte, wie es die meisten Kik-Bots tun. Für verschiedene Benutzer möchte ich verschiedene Optionen haben. Ich habe eine Funktion erstellt, um zu überprüfen, ob der aktuelle Benutzer einmal zu diesen speziellen Benutzern gehört, und wenn ja, um eine andere Option für sie anzuzeigen. Aus vielen Tests habe ich die Gewissheit, dass die Funktion wahr ist, wie auch immer sich die Tastaturoptionen von dem abwenden, was ein normaler Benutzer sehen würde. Hier ist mein Code:Kik Bot Tastatur Elemente ändern sich nicht
Antwort
Knoten Js möchte Programme fortsetzen, wenn Funktionen gestartet werden, so dass es mehr Anforderungen annehmen kann. Die Funktion userIsAdmin()
macht eine Web-Anfrage an Firebase, also dauert es nur einen Bruchteil einer Sekunde, um die Daten herunterzuladen, es ist lang genug, dass es vor der Ausführung false zurückgibt. Was ich tun musste, war die Funktion userIsAdmin()
bearbeiten, so dass es einen Rückruf als Parameter nahm und dann aufrufen. Hier ist mein neuer Code:
let sendingMessage = Bot.Message.text("I don't understand what you are trying to ask me. Please reply with something I can work with.")
adminCheck(user, function(isAdmin)
{
if (isAdmin)
{
bot.send(sendingMessage.addResponseKeyboard(adminSuggestedResponces), user)
}
else
{
bot.send(sendingMessage.addResponseKeyboard(userSuggestedResponces), user)
}
});
Und hier ist meine adminCheck
Funktion:
var isAdmin = false
adminsRef.on("child_added", function(snapshot)
{
if(user == snapshot.key && snapshot.val() == true)
{
isAdmin = true
}
});
adminsRef.once("value", function(snapshot)
{
callback(isAdmin)
});
Nur um Ihnen zu helfen, falls Sie ähnliche Probleme in der Zukunft haben, hat dies nichts mit der Ausführungszeit zu tun. Node.js arbeitet die meiste Zeit asynchron, um den Haupt-Thread nicht einfach "hängen" zu lassen. Auf diese Weise können Sie mehrere Anfragen parallel bearbeiten. Ich würde empfehlen, Versprechungen auszuprobieren, die eine viel sauberere Art des Umgangs mit solchen Dingen als einfache Rückrufe sind. –
Hat Ihre Nachricht tatsächlich gesendete (= tun Sie die Nachricht auf der Kik App erhalten?). –
@ Rémi Vansteelandandt Ja, alles funktioniert wie es sollte, außer dass die vorgeschlagene Tastatur sich nicht ändert. – pjtnt11
Ich würde die Nachrichten haben unterschiedliche Zeichenfolgen für Testzwecke. Ich höre, als würden Sie immer nur die zweite Nachricht senden. Wenn Sie die Nachrichtentexte ändern, können Sie sehen – quikst3r