Wiki

Clone wiki

User Apps / Bootstrap / App-Erstellen

App erstellen

Eine App besteht immer aus einem Ordner der eine app.config sowie eine main.js enthält.

Javascript

Die main.js besteht aus einem App-Container der diverse Events enthält. Weitere Informationen zu den Events findest du hier in der Dokumentation.

#!javascript

var App = (new function() {
    /* App Events */

    /**
     * Diese Funktion wird aufgerufen, wenn die App gestartet wurde.
     */
    this.onAppStart = function() {};
    /**
     * Bevor die App beendet wird, wird diese Funktion aufgerufen. Hier kann man z.B. unterbinden, dass neue Spiele gestartet werden etc.
     * @param {Number} secondsTillShutdown Sekunden bis zum Herunterfahren
     */
    this.onPrepareShutdown = function(secondsTillShutdown) {};

    /**
     * Diese Funktion wird aufgerufen, sobald die App beendet wird. Die Funktionialität ist eingeschränkt und hier sollten nur Daten in der Persistenz gespeichert werden um den ursprünglichen Status nach dem Neustart wieder herzustellen.
     */
    this.onShutdown = function() {};


    /**
     * Diese Funktion wird aufgerufen, sobald ein Nutzer den Channel betritt.
     * @param {User} user
     */
    this.onUserJoined = function(user) {};

    /**
     * Diese Funktion wird aufgerufen, sobald ein Nutzer den Channel wieder verlässt.
     * @param {User} user
     */
    this.onUserLeft = function(user) {};


    /* Message Events */

    /**
     * Diese Funktion wird aufgerufen, wenn der Bot eine private Nachricht oder eine /m erhält.
     * @param {PrivateMessage} privateMessage
     */
    this.onPrivateMessage = function(privateMessage) {};

    /**
     * Diese Funktion wird aufgerufen, wenn jemand etwas öffentlich im Channel schreibt.
     * @param {PublicMessage} publicMessage
     */
    this.onPublicMessage = function(publicMessage) {};

    /* Knuddel Events */

    /**
     * Diese Funktion wird aufgerufen, bevor Knuddel von einem User dem Bot gutgeschrieben wird. Hier kann man den Transfer der Knuddel vorher unterbinden oder einem KnuddelPot hinzufügen.
     * @param {KnuddelTransfer} knuddelTransfer
     */
    this.onBeforeKnuddelReceived = function(knuddelTransfer) {};

    /**
     * Diese Funktion wird aufgerufen, sobald der Bot die Knuddel vom User endgültig erhalten hat. Erst hier ist der Eingang der Knuddel sichergestellt.
     * @param {User} sender
     * @param {User} receiver
     * @param knuddelAmount
     */
    this.onKnuddelReceived = function(sender, receiver, knuddelAmount) {};

    /* Dice Events */

    /**
     * Diese Funktion wird aufgerufen, sobald ein User öffentlich oder privat mit der /d Funktion würfelt.
     * @param diceEvent
     */
    this.onUserDiced = function(diceEvent) {};

    /* Chat Commands */

    /**
     * In diesem Object werden Chatbefehle definiert.
     * @type {{}}
     */
    this.chatCommands = {
        /**
         * Diese Funktion wird aufgerufen, wenn ein Nutzer /firstapp im Channel eingibt.
         * @param {User} user
         * @param {String} params In dieser Variable ist sämtlicher Text hinterlegt, die der Nutzer hinter /firstapp eingegeben hat. z.B: /firstapp Hallo
         * @param {String} func Der Funktionsname der aufgerufen wurde, in diesem Fall kann es nur firstapp sein.
         */
        firstapp: function(user, params, func) {
            user.sendPrivateMessage("Hallo " + user.getProfileLink() + ", dies ist noch meine erste App.");
        }
    };
}());

Konfiguration

Die app.config besitzt Grundinformationen. Neben den App-Namen wird hier auch die App-Version sowie die Instalationsberechtigungen gesetzt:

appName = YourAppName
appVersion = 1.0
mayBeInstalledBy.1 = *.knuddelsAT
mayBeInstalledBy.2 = Plex.knuddelsDE
autoUpdate = knuddelsDEV
Name Beschreibung
appName Der Name von der App
appVersion Die derzeitige Version der App
mayBeInstalledBy.<n> Definiert wer die App installieren darf. Durch * wird festgesetzt dass jeder die App installieren darf. Diese Eigenschaft kann mehrfach existieren und wird mit <n> durchnummeriert. Auf einen Nutzer kann man es begrenzen mit <Nickname>.<ServerID> (Ironist.knuddelsDE).
autoUpdate (Standard-Wert: false) Sagt aus, ob die App auf dem Entwicklungsserver neu starten soll, nachdem neue Daten in den FTP geladen wurden.

Updated