Botskript


  • cheaterboy
  • 1155 Aufrufe 1 Antwort

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo Leute, ich habe für meinen Webkicks-Chat das dafür vorgesehene Bot-Skript namens MaiZ geholt und wollte nun 2 Funktionen einbauen,
    1. Uhrzeitanzeige, am besten mit dem Befehl !time
    2. datumsanzeige, am besten mit dem befehl !date

    in den dazugehörigen foren habe ich nichts gefunden, und ich kenne mich leider auch nur sehr wenig mit javascript aus, könnte mir jemand reinposten wie der quellcode für die beiden aktionen aussieht??

    achja und nochwas, ich kann einstellen dass der bot auf vorgegebene wörter mit dafür vorgegebenen sätzen reagiert. wie kann ich es realisieren, dass der bot mehrere sätze zur auswahl hat und einen davon auswählt per zufallsprinzip?? habe da auch nirgends eine lösung gefunden. ich hoffe mir kann jemand weiterhelfen
    greetz cheaterboy


    EDIT: Vielleicht hilfts ja was wenn ich den Code des Scripts mal hier poste, dann könnt ihr mir vlt. eher helfen...

    Quellcode

    1. // MaiZ - Version 0.5 - 20. Juni 2007
    2. // HTML-Tags entfernen
    3. // Rückgabe: von HTML-Tags geklärter Text
    4. function removeTags (str) {
    5. return str.replace(/<[^>]*>/g, "");
    6. }
    7. // Entfernen von kritischen Zeichen
    8. // Sollte bei Links, etc. immer aufrufen werden
    9. // Rückgabe: ein entsprechend modifizierter Text
    10. function removeBadChars (str, m) {
    11. if (m == 0) {
    12. str = encodeURIComponent(str);
    13. } else {
    14. str = str.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "'");
    15. }
    16. return str;
    17. }
    18. // Erfassung der Chatzeilendaten
    19. // Gibt ein Array wieder wenn die Zeile eine normale erfassbare Chatzeile ist, ansonsten FALSE.
    20. // Rückgabe: ZEILENTYP (0 = normaler Text, 1 = geflüsteter/kursiver Text, 2 = nicht definierbar), ZEILENAUTHOR, ZEILENTEXT
    21. function lineData (str) {
    22. var r = RegExp(/^\s*\(\d+:\d+\) (\w+)(\W)\s*(.*)$/).exec(removeTags(str));
    23. if (r) {
    24. switch (r[2]) {
    25. case ":": r[2] = 0; break;
    26. case " ": r[2] = 1; break;
    27. default: r[2] = 2; break;
    28. }
    29. return [r[2],r[1],r[3]];
    30. } else {
    31. return false;
    32. }
    33. }
    34. // Streamzeilen-Counter
    35. // Nötig damit das Script Zeilen nicht mehrfach erfasst
    36. strLen = 0;
    37. // Chatbot-Klasse
    38. ChatBot = function (name) {
    39. // Assoziatives Array für die Bot-Befehle
    40. this.cmd = new Object();
    41. // Assoziatives Array für die Wörter, auf die der Bot reagieren soll
    42. this.rcwd = new Object();
    43. // Prüft einen Text auf ein ChatBot-Command und ruft den zugehörigen Befehl, falls vorhanden, auf
    44. // Befehlstexte werden immer mit einem Ausrufezeichen eingeleitet, gefolgt von dem Befehlsnamen.
    45. // Beispiel: !CMD TEXT
    46. this.checkForCmd = function (d) {
    47. var t = d[2];
    48. var cmdname = t.split(" ")[0].replace(/!/, "")
    49. if (this.cmd[cmdname]) {
    50. this.echo(this.cmd[cmdname](t, this.getAttr(t)));
    51. } else {
    52. this.echo("Sollte das ein Botbefehl sein <b>"+d[1]+"</b>? Wenn ja... Ist er mir nicht bekannt... o.O");
    53. }
    54. }
    55. // Prüft einen Text auf Wörter, auf die der Bot reagiert (Groß/Kleinschreibung wird beachtet)
    56. this.checkForRcwd = function (t) {
    57. for (w in this.rcwd) {
    58. if (t.match(w)) {
    59. this.echo(this.rcwd[w]);
    60. break;
    61. }
    62. }
    63. }
    64. // Gibt einen ChatBot-Text im Chat aus
    65. this.echo = function (t) {
    66. var tr = document.createElement("tr");
    67. var td = document.createElement("td");
    68. td.innerHTML = name + ": " + t;
    69. tr.appendChild(td);
    70. document.getElementsByTagName("table")[strLen].getElementsByTagName("tbody")[0].appendChild(tr);
    71. }
    72. // Filtert die Befehlsattribute aus einem Text
    73. // Attribute werden immer mit einem # eingeleitet, Ausnahmen bilden die letzten Text-Attribute (zum Beispiel der zu sagende Grundtext bei !say)
    74. // Beispiel: !CMD #ATTR1 TEXT
    75. this.getAttr = function (t) {
    76. t = t.split(" ");
    77. var attr = new Array();
    78. for (i = 1; i < t.length; i++) {
    79. if (t[i].indexOf("#") == 0) {
    80. attr[i-1] = t[i].toLowerCase().replace(/#/, "");
    81. } else {
    82. break;
    83. }
    84. }
    85. return attr;
    86. }
    87. // Für den Bot definierte Befehle
    88. // Attribute in Klammern sind optional, müssen jedoch in der angegeben Reihenfolge genutzt werden.
    89. // Befehle werden von "checkForCmd" immer nach dem Schema "FUNCTION(CHATTEXT, ATTRIBUTE)" aufgerufen
    90. // Befehle geben immer einen String zurück, der mit "echo" im ChatBot-Format ausgegeben wird
    91. // SAY: gibt den angegebenen Text aus.
    92. // Syntax: !SAY (#MODUS) (#FARBE) TEXT
    93. // #MODUS: Ausgabeart des Textes. Mögliche Angaben: leet, crazy, haxor, reverse
    94. // #FARBE: Farbe des Textes. Mögliche Angaben: Farbe als Hex-Zahl
    95. this.cmd.say = function (t, attr) {
    96. t = t.substr(5);
    97. if (attr[0] && !(attr[0].match(/\W/))) {
    98. if (attr[0].match(/[^a-f0-9]/)) {
    99. if (attr[1] && attr[1].length == 6 && !(attr[1].match(/[^0-9a-f]/))) {
    100. var col = attr[1];
    101. t = t.substr(8);
    102. }
    103. t = t.substr(attr[0].length+2).toLowerCase();
    104. switch (attr[0]) {
    105. case "leet":
    106. var lett = [['a','b','e','g','i','l','o','q','s','t','z'], ['4','8','3','6','1','1','0','9','5','7','2']];
    107. break;
    108. case "crazy":
    109. lett = [['a','b','c','e','i','l','r','s','y'], ['@','ß','©','€','!','£','®','$','¥']];
    110. break;
    111. case "haxor":
    112. lett = [['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'], ['4','8','(','|)','3','|=','6','|-|','1','1','|<','|_','|\\/|','|\\|','0','|°','9','|2','5','7','|_|','\\/','\\/\\/','><','°/','2']];
    113. break;
    114. case "reverse":
    115. t = "<bdo dir=\"rtl\">"+t+"</bdo>";
    116. break;
    117. default:
    118. break;
    119. }
    120. if (lett) {
    121. for (i = 0; i < lett[0].length; i++) {
    122. while (t.search(lett[0][i]) > -1) {
    123. t = t.replace(lett[0][i], lett[1][i]);
    124. }
    125. }
    126. }
    127. } else if (attr[0].length == 6) {
    128. var col = attr[0];
    129. t = t.substr(8);
    130. }
    131. if (col) {
    132. t = "<font color=\"#"+col+"\">"+t+"</font>";
    133. }
    134. }
    135. return t;
    136. }
    137. // SEARCH: gibt einen Suchlink des Textes im Chat aus.
    138. // Syntax: !SEARCH #SERVICE TEXT
    139. // #SERVICE: Suchservice. Mögliche Angaben: google, yahoo, wiki, imdb, leo, icq, live, ebay
    140. this.cmd.search = function (t, attr) {
    141. if (attr[0]) {
    142. t = t.substr(10+attr[0].length);
    143. if (t.length > 0) {
    144. var s, l;
    145. switch (attr[0]) {
    146. case "google":
    147. s = "Google";
    148. l = "http://www.google.de/search?q="
    149. break;
    150. case "yahoo":
    151. s = "Yahoo!";
    152. l = "http://de.search.yahoo.com/search?p=";
    153. break;
    154. case "wiki":
    155. s = "Wikipedia-Artikel";
    156. l = "http://de.wikipedia.org/wiki/Spezial:Suche?fulltext=Volltext&search=";
    157. break;
    158. case "imdb":
    159. s = "IMDb-Film-Datenbank";
    160. l = "http://www.imdb.com/find?s=all&q="
    161. break;
    162. case "leo":
    163. s = "LEO-Englisch <-> Deutsch-Wörterbuch";
    164. l = "http://dict.leo.org/?lp=ende&lang=de&searchLoc=0&cmpType=relaxed&relink=on&sectHdr=on&spellToler=std&search=";
    165. break;
    166. case "icq":
    167. s = "ICQ-People";
    168. l = "http://www.icq.com/search/people_results.php?q=";
    169. break;
    170. case "live":
    171. s = "Live.com";
    172. l = "http://search.live.com/results.aspx?q=";
    173. break;
    174. case "ebay":
    175. s = "eBay";
    176. l = "http://search.ebay.de/search/search.dll?query=";
    177. break;
    178. default:
    179. s = false;
    180. break;
    181. }
    182. if (s) {
    183. t = s + "-Suche nach &quot;"+removeBadChars(t)+"&quot;: <a href=\"" + l + removeBadChars(t, 0) + "\" target=\"_blank\">Link</a>";
    184. } else {
    185. t = "Ich kenne die Suchmaschine \""+removeBadChars(attr[0])+"\" nicht... o.O";
    186. }
    187. } else {
    188. t = "Du hast keinen Suchbegriff angegeben... o.O";
    189. }
    190. } else {
    191. t = "Also... Da fehlt irgendwie die Suchmaschine... o.O";
    192. }
    193. return t;
    194. }
    195. // Worte, auf die der Bot reagiert
    196. this.rcwd['test'] = "ich sage etwas!";
    197. this.rcwd['maiz'] = "was ist mit mir?";
    198. }
    199. // Definition eines neuen ChatBot-Objekts "bot"
    200. // Der angegebene Wert ist der Name des ChatBots
    201. bot = new ChatBot("<b><font color=\"aqua\">M<font color=\"white\">ai</font>Z</font></b>");
    202. // ChatBot-Aufruf
    203. // Prüft zuerst den Zeilentyp und führt hierauf entweder checkForCmd oder checkForRcwd auf
    204. function changeStr () {
    205. for (strLen; strLen < document.getElementsByTagName("table").length; strLen++) {
    206. c = document.getElementsByTagName("table")[strLen];
    207. l = lineData(c.innerHTML);
    208. if (l[0] < 2) {
    209. if (l[0] == 0) {
    210. if (l[2].length > 1 && l[2].indexOf("!") == 0) {
    211. bot.checkForCmd(l);
    212. } else {
    213. bot.checkForRcwd(l[2]);
    214. }
    215. }
    216. }
    217. }
    218. }
    219. // Starten des Intervalls.
    220. // Hier muss der Onlinelisten-Name des Bots angegeben werden
    221. setInterval("changeStr();parent.rightFrame.add('MaiZ');", 1000);
    Alles anzeigen