Tutorial: Dem Channel einen neuen Topic verpassen

Viele von euch haben mich angeschrieben und gefragt, wie man mit Hilfe der Knuddels API den Topic im Channel verändern kann. Daher schauen wir uns heute dieses Vorhaben genauer an.

Damit man das Thema des Channels ändern kann, gibt es zwei verschiedene Methoden. Zum einen wäre das getTopic() und zum anderen setTopic().

getTopic

Diese Methode liefert uns das aktuelle Thema des Channels. Die Informationen werden dazu in einem String gespeichert und können anschließend modifiziert, erweitert oder sonst auf alle möglichen Arten und Weisen bearbeitet werden.

setTopic

Als Gegenstück dazu, gibt es die Methode setTopic. Diese ermöglicht es euch, einen selbst gestalteten Topic automatisch für euren Channel festzulegen. Dies wird zum Beispiel notwendig, wenn man im Thema des Channels den besten Spieler erwähnt, auf ein Event hinweist oder einfach ein besonderes Thema verwenden möchte.


Aufgabenstellung:

Wir möchten eine User App erstellen, die bei einem manuell gestarteten Event automatisch ein besonderes Thema für den Channel setzt. Wenn das Event vorbei ist, wird auf das standardmässige Channeltopic zurück gewechselt.


Hinweis: Bei diesem Tutorial wird vorausgesetzt, dass ihr einen aktiven Entwickler-Account und Zugang zu euren FTP-Server habt.

Schritt 1:

Wir erstellen eine neue User App, die später in deinem Channel laufen soll. Eine genaue Anleitung hat bereits Ironist in diesem Beitrag erklärt.

Schritt 2:

Als nächstes müssen wir es schaffen, dass deine App auf Chatbefehle reagiert. Hierfür kannst du nur Chatbefehle verwenden, die es bereits noch nicht in Knuddels gibt und im besten Fall allen Usern schon andeutet, was wohl passieren wird. Solange die Funktionen keine besonderen Rechte abfragen, können alle Chatbefehle die ihr nun einfügt, von allen Usern ausgeführt werden!

Folgendes gebt ihr nun in der main.js ein:

this.chatCommands = {
  /* Hier kommen anschließend eure Chatbefehle rein, die ihr zur Verfügung stellen möchtet.
};

Innerhalb von chatCommands = { }; werden der User App mitgeteilt, welche Funktionen temporär (solange die App aktiv ist) funktionieren sollen.

Schritt 3:

Wir müssen uns ein „Standard-Topic“ überlegen, welches immer im Channel angezeigt werden soll. Dieses Topic sichern wir als globale Variable.

Globale Variablen sind im gesamten Dokument gültig und stehen jederzeit zur Verfügung. Wenn innerhalb von Funktionen Variablen ohne das Schlüsselwort var deklariert werden, dann sind diese Variablen global.

Quelle: selfhtml.org

In unserem Tutorial werden wir die Variable normalesTopic nennen und setzen sie an den Anfang unseres Scripts.

normalesTopic           = 'Dieses Topic wurde von uns als Standard-Topic gesetzt';

Schritt 4:

Für den späteren Aufbau unserer kleinen App benötigen wir allerdings noch ein paar weitere globale Variablen, die später das Arbeiten mit dem Topic erleichtern bzw. ermöglichen.

kpfad                   = KnuddelsServer.getFullSystemImagePath(''); // Hier werden die Pfade für die Systemgrafiken festgelegt .
bot                     = KnuddelsServer.getDefaultBotUser(); // Hier wird der BotUser definiert.

channel                 = KnuddelsServer.getChannel();      // Hier werden die allgemeinen Informationen für den Channel geladen.
channelConfiguration    = channel.getChannelConfiguration(); // Hier werden die Channelkonfigurationen geladen.
channelInformation      = channelConfiguration.getChannelInformation(); // Hier werden die Channelinformationen geladen.

kpfad ermöglicht es uns später, die von Knuddels bereit gestellten Grafiken zu verwenden, in dem wir dort die Funktion getFullSystemImagePath() lagern.

bot ist im späteren Beispiel immer unser App Bot, der entweder etwas öffentlich oder privat schreibt. In dieser Variable lagern wir die Methode getDefaultBotUser().

channel, channelConfiguration und channelInformation werden benötigt um die allgemeinen Informationen über den Channel, dessen Konfiguration und Einstellungen zu erhalten.

Schritt 5:

Nachdem wir alle notwendigen Variablen gesetzt haben, können wir mit den eigentlichen zwei Funktionen anfangen. Ich habe mich hierbei für zwei eingängige Funktionen entschieden: /startevent und /stopevent. Welche Funktionen ihr verwenden wollt, ist euch überlassen.

Schritt 5.1 (/startevent  + setzen des neuen Topics)

Wie ihr bereits gelernt habt, werden Befehle immer innerhalb des this.chatCommands = {}; Bereiches eingepflegt.

        /*
            Mit /startevent wollen wir das Topic setzen, das während eines Events sichtbar ist.
        */
        startevent: function(user, params, command) {
            channelInformation.setTopic('Aktuell läuft das Event BEISPIEL °>'+kpfad+'/smileys/smiley_headline.gif<°'); // Setzt das Event-Topic inkl. Systemgrafik.
            // Hier kommt der Script-Code hin, der euer Event startet!
        },

In Zeile 4 starten wir mit der neuen Funktion und in Zeile 7 müssen wir sie wieder mit der geschweiften Klammer {} schließen.

In Zeile 5 hingegen, verwenden wir die Globale Variable channelInformation zusammen mit der Methode .setTopic() um den darin definierten Topic zu setzen. Im Topic-Text selbst ist ebenfalls die Verwendung der Variable kpfad, die dazu führt dass eine Grafik im Topic später angezeigt wird.

In Zeile 6 sollte nun euer Script eingebunden werden, welches euer Event startet.

Schritt 5.2 (/stopevent + setzen des normalen Topics)

        /*
            Mit /stopevent wollen wir das Topic setzen, das normalerweise im Channel zu sehen wäre.
        */
        stopevent: function(user, params, command) {
            channelInformation.setTopic(normalesTopic, true); // Setzt das normale Topic des Channels, und wird sofort angezeigt!
            // Hier kommt der Script-Code hin, der euer Event beendet!
        }

Ebenso wie unter Schritt 5.1 wurde hier wieder eine neue Funktion angelegt. In Zeile 5 hingegen wird nun wieder auf die zuvor definierte Variable normalesTopic zurück gegriffen und sorgt dafür, dass euer standardmässiges Topic wieder gesetzt wird.

Hinweis: Wenn ihr dieses Script im Chat installiert, ist es aktuell noch so, dass jeder User diese Funktionen anwenden kann. Erst im nächsten Tutorial beschäftigen wir uns damit, wie man Funktionen nur bestimmten Usergruppen zugänglich macht.

Letzte Kontrolle:

Wenn ihr alle Schritte nachgemacht habt, sollte eure main.js ungefähr so aussehen:

kpfad                   = KnuddelsServer.getFullSystemImagePath(''); // Hier werden die Pfade für die Systemgrafiken festgelegt .
bot                     = KnuddelsServer.getDefaultBotUser(); // Hier wird der BotUser definiert.

channel                 = KnuddelsServer.getChannel();      // Hier werden die allgemeinen Informationen für den Channel geladen.
channelConfiguration    = channel.getChannelConfiguration(); // Hier werden die Channelkonfigurationen geladen.
channelInformation      = channelConfiguration.getChannelInformation(); // Hier werden die Channelinformationen geladen.

normalesTopic           = 'Dieses Topic wurde von uns als Standard-Topic gesetzt'; // Hier wird das normale Topic des Channels definiert.

var App = (new function() {
    // Hier folgen Chatbefehle
    this.chatCommands = {
        /*
            Mit /startevent wollen wir das Topic setzen, das während eines Events sichtbar ist.
        */
        startevent: function(user, params, command) {
            channelInformation.setTopic('Aktuell läuft das Event BEISPIEL °>'+kpfad+'/smileys/smiley_headline.gif<°'); // Setzt das Event-Topic inkl. Systemgrafik.
            // Hier kommt der Script-Code hin, der euer Event startet!
        },
        /*
            Mit /stopevent wollen wir das Topic setzen, das normalerweise im Channel zu sehen wäre.
        */
        stopevent: function(user, params, command) {
            channelInformation.setTopic(normalesTopic, true); // Setzt das normale Topic des Channels, und wird sofort angezeigt!
            // Hier kommt der Script-Code hin, der euer Event beendet!
        }
    };
}());

Damit sind wir auch schon wieder am Ende des heutigen Tutorials! Wie bereits als Hinweis geschrieben wurde, können die Funktionen von allen im Channel befindlichen Usern ausgeführt werden. Im nächsten Tutorial kümmern wir uns um das Thema, Funktionen nur für bestimmte Usergruppen zur Verfügung zu stellen. Bis dahin, wünsche ich viel Spaß beim ausprobieren und nachmachen.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s