Hallöchen, ich habe mir mal ein Chatbot gebastelt, er ist schlicht und einfach, habe auch eine Schimpfwortliste eingebaut.
Im JavaScript habe ich wichtige Einträge beschrieben. Man kann auch die Texte ändern und verlängern. Man muss nur auf die Häckchen achten, am Anfang und am Schluss einer Antwort und das ihr innerhalb der Klammern bleibt. Jede neue Antwort wird durch ein Komma getrennt, z.B. ( ["Wie findest du das Wetter?", "Kommst du oft hierher?", "Es ist so schön, mit dir zu reden.", "Weißt du was? Ich weiß nicht, ob ich an den Weihnachtsmann glaube."] ; )
Habe an dem Script sehr lange gehangen, man kann es im Xobor - Forum unter "Eigener Seiten" benutzen, auch daran habe ich lange gehangen bis ich es im Xobor - Forum zum Laufen bekommen habe.
Ich habe das Javascript schon in den HTML Code mit eingefügt, habe sie aber hier absichtlich eingefügt.
function showIsTyping() { document.getElementById("isTyping").style.visibility = "visible"; }
function chatBotAnswer(msg) { document.getElementById("isTyping").style.visibility = "hidden"; var chatBotAnswer = getRandomMessage(msg); printMessage(chatBotAnswer); gotoBottom(); }
// Hier kann man die Zufallsnachricht verändern und noch Texte hinzufügen
function getRandomMessage(msg) { var greetings = ["Wie geht es dir?", "Es ist schön, mit dir zu reden.", "Hallo!", "Hi!"];
// Hier kann man für die Fragen noch Texte hinzufügen var ifQuestion = ["Das ist eine interessante Frage. Warum willst du das wissen?", "Das frage ich mich auch hin und wieder.", "Ich weiß nicht.", "Weißt du, was du fragst?", "Würde ich sagen ... Warte ab. Nein, ich weiß es nicht."]; // Hier kann man für die Schimpfwörterliste noch Texte hinzufügen var ifSwear = ["Du verwendest solch ein Schimpfwort?", "Ist das nett gesagt?", "Ich denke, du solltest dir ansehen, was du geschrieben hast."]; // Hier kann man für die normalen Wörter noch Texte hinzufügen var general = ["Wie findest du das Wetter?", "Kommst du oft hierher?", "Es ist so schön, mit dir zu reden.", "Weißt du was? Ich weiß nicht, ob ich an den Weihnachtsmann glaube."]; var answerTypes = [general, greetings, ifQuestion, ifSwear];
var selectedAnswerType = answerTypes[0]; isQuestion(msg);
if (isQuestion(msg)) { selectedAnswerType = answerTypes[2]; // Wählt den Antworttyp „ifFrage'; };
if (isSwear(msg)) { selectedAnswerType = ifSwear; }
if (msg.includes("hallo")) {};
var selectedPhrase = selectedAnswerType[Math.floor(Math.random() * selectedAnswerType.length)]; return selectedPhrase; } // Hier kann man die Schimpwörter für die Schimpfwortliste angeben function isSwear(msg) { var list = ["fuck", "shit", "hitto", "perkele", "fucking"]; return containsAnyOnList(msg, list); } // Hier kann man noch Fragewörter einfügen function isQuestion(msg) { var list = ["?", "was", "Wenn"]; return containsAnyOnList(msg, list); }
function containsAnyOnList(msg, listToBeComparedTo) { var contains = false; for (i = 0; i < listToBeComparedTo.length; i++) {if (window.CP.shouldStopExecution(0)) break; if (msg.includes(listToBeComparedTo[i])) { contains = true; }; }window.CP.exitedLoop(0);; return contains; } //# sourceURL=pen.js </script>
function showIsTyping() { document.getElementById("isTyping").style.visibility = "visible"; }
function chatBotAnswer(msg) { document.getElementById("isTyping").style.visibility = "hidden"; var chatBotAnswer = getRandomMessage(msg); printMessage(chatBotAnswer); gotoBottom(); }
// Hier kann man die Zufallsnachricht verändern und noch Texte hinzufügen
function getRandomMessage(msg) { var greetings = ["Wie geht es dir?", "Es ist schön, mit dir zu reden.", "Hallo!", "Hi!"];
// Hier kann man für die Fragen noch Texte hinzufügen var ifQuestion = ["Das ist eine interessante Frage. Warum willst du das wissen?", "Das frage ich mich auch hin und wieder.", "Ich weiß nicht.", "Weißt du, was du fragst?", "Würde ich sagen ... Warte ab. Nein, ich weiß es nicht."]; // Hier kann man für die Schimpfwörterliste noch Texte hinzufügen var ifSwear = ["Du verwendest solch ein Schimpfwort?", "Ist das nett gesagt?", "Ich denke, du solltest dir ansehen, was du geschrieben hast."]; // Hier kann man für die normalen Wörter noch Texte hinzufügen var general = ["Wie findest du das Wetter?", "Kommst du oft hierher?", "Es ist so schön, mit dir zu reden.", "Weißt du was? Ich weiß nicht, ob ich an den Weihnachtsmann glaube."]; var answerTypes = [general, greetings, ifQuestion, ifSwear];
var selectedAnswerType = answerTypes[0]; isQuestion(msg);
if (isQuestion(msg)) { selectedAnswerType = answerTypes[2]; // Wählt den Antworttyp „ifFrage'; };
if (isSwear(msg)) { selectedAnswerType = ifSwear; }
if (msg.includes("hallo")) {};
var selectedPhrase = selectedAnswerType[Math.floor(Math.random() * selectedAnswerType.length)]; return selectedPhrase; } // Hier kann man die Schimpwörter für die Schimpfwortliste angeben function isSwear(msg) { var list = ["fuck", "shit", "hitto", "perkele", "fucking"]; return containsAnyOnList(msg, list); } // Hier kann man noch Fragewörter einfügen function isQuestion(msg) { var list = ["?", "was", "Wenn"]; return containsAnyOnList(msg, list); }
function containsAnyOnList(msg, listToBeComparedTo) { var contains = false; for (i = 0; i < listToBeComparedTo.length; i++) {if (window.CP.shouldStopExecution(0)) break; if (msg.includes(listToBeComparedTo[i])) { contains = true; }; }window.CP.exitedLoop(0);; return contains; } //# sourceURL=pen.js </script>
Hallo Daishi, wieder eine tolle, inspirierende, aber doch spezielle Idee!
Für große Foren mit formellen Themen eine große Hilfe! Oft werden die gleichen Fragen gestellt und wenn es hierzu auch die gleichen Antworten gibt, ist bei einer Flut von Anfragen so ein ChatBot super hilfreich! Gut bestückt mit überlegten und passenden Antworten eine ideale Unterstützung Aber ein persönlichen Chat mit echten Antworten kann durch ein ChatBot, sei er noch so gut, nicht ersetzt werden! Wenn man entdeckt, das man mit einer Maschine redet, war's das ....
Zu Deinem Skript:
Es hat auf Anhieb funktioniert!
Hier finde ich es auch passend das Skript auf "Eigene Seiten" unterzubringen!
Deine Erklärungen sind gut und hilfreich!
Es ist schon interessant, dass das Skript auf Fragen, Aussagen, Schimpfwörter, auch auf Wiederholungen reagieren kann!
Fehler im Skript, die der Browser ingnoriert oder korregiert:
Das Javascript im Spoiler "HTML" ist außerhalb der HTML-Struktur eingetragen!
Einige JavaScript-Eintragungen benötigt nur "Codepen" und können wegfallen! Unter "HTML":Zeile 28+40
Der CSS-Link in Zeile 7 führt ins Leere, kann aber angepasst werden, wenn er gebraucht wird!
Nachteil:
In Zeile 43 unter "HTML" befindet sich von "Codepen" ein generiertes Skript, dass wohl mit der Anmeldung zu tun hat! Ich denke, wenn Du Deinen Accont aufgibts, funktioniert das Skript in anderen Foren auch nicht mehr....
Zitat von Wolfgang im Beitrag #2Nachteil: In Zeile 43 unter "HTML" befindet sich von "Codepen" ein generiertes Skript, dass wohl mit der Anmeldung zu tun hat! Ich denke, wenn Du Deinen Accont aufgibts, funktioniert das Skript in anderen Foren auch nicht mehr....1 <script src="https://cpwebassets.codepen.io/assets/common/stopExecutionOnTimeout...."></script>n
Das ist ein Timing des Endlosschleifenschutzes für CodePen ja und leider, wenn man den entfernt geht das Script leider nicht.
Wir machen hier bei CodePen ziemlich ausgefallene Tänze, um zu verhindern, dass Endlosschleifen in JavaScript den Browser blockieren. Ja, so intelligent Browser auch sind, sie können immer noch eine Endlosschleife schreiben und den Browser vollständig sperren, bis er absolut eingefroren ist und überhaupt nicht mehr reagiert. Wir wollen nicht, dass das im CodePen-Editor passiert, da es sogar zu Arbeitsverlusten führen kann (keuch!). von Chris Coyier
Hallo Daishi, besten Dank für den Hinweis! Wenn der "Endlosschleifenschutz" nur für den CodePen-Editor gedacht ist (da ist er auch sinnvoll), hat er bei einem funktionierenden Skript keine Aufgabe und könnte somit entfernt werden! Löscht man allerdings das dazu gehörige JavaScript, funktionieren Teile vom Skript nicht mehr!
Lösung:
Der Schleifenschutz ist in "CodePen" nicht geheimnisvoll versteckt, sondern gut aufzufinden! Eine Teil-Bezeichnung des JavaScript-Namen findet man im eigentlichen Skript wieder (stopExecution)!
Mit einer umschließenden if-Funktion wird eine mögliche Endlosschleife verhindert! Löscht man die if-Funktion heraus (durch 2 Doppelstriche), läuft das Skript ohne die zusätzliche JavaScript-Datei! Die if-Funktion ist immer gleich, auch in anderen Skripten, hier Rot markiert!
Das CodePen-Editor-Script für den "Endlosschleifenschutz":
Ich habe noch einen kleinen Fehler gefunden, habe ich korrigiert, anstatt Gänsefüßchen oben ( " ) hatte ich Gänsefüßchen unten ( „ ) .
Diese habe ich in HTML - Code geändert und im Javascript.
HTML - Code Zeile: 116
vorher ( var ifSwear = ["Du verwendest solch eine Schimpfworte!“, „Ist das nett gesagt?“, „Ich denke, du solltest dir ansehen, was du sagst."]; )
Aktualisiert : ( var ifSwear = ["Du verwendest solch ein Schimpfwort?", "Ist das nett gesagt?", "Ich denke, du solltest dir ansehen, was du geschrieben hast."]; )
Javascript Zeile: 80
vorher ( var ifSwear = ["Du verwendest solch eine Schimpfworte!“, „Ist das nett gesagt?“, „Ich denke, du solltest dir ansehen, was du sagst."]; )
Aktualisiert : ( var ifSwear = ["Du verwendest solch ein Schimpfwort?", "Ist das nett gesagt?", "Ich denke, du solltest dir ansehen, was du geschrieben hast."]; )