Problem mit erstem/letztem User im Channel

Issue #72 new
Tobias Kunicke created an issue

Folgender Code als Beispiel:

var App = new function() {
    var self = this;
    var bot = null;

    this.onUserJoined = function(user)
    {       

        var message;
        var nick = user.getNick();

        if(nick == "PHP4ever") {
            message = "Hallo Tobi _:_D";

        } else  {
            message = "Hallo " + user.getProfileLink() + " °>sm_00.gif<°";
        }
        KnuddelsServer.getDefaultLogger().debug("User " + user.getNick() + " joins, preparing message");
            setTimeout(function(){
                KnuddelsServer.getDefaultLogger().debug("User " + user.getNick() + " joined, sending NOW.");
                bot.sendPublicMessage(message);
            }, 1000);
    };

    this.onUserLeft = function(user) {
        var channel = KnuddelsServer.getChannel().getChannelName();
        KnuddelsServer.getDefaultLogger().debug("User " + user.getNick() + " leaves channel. Sending information.");
        user.sendPrivateMessage("Ich hoffe du hattest Spaß in °>meinem Channel|/cc "+channel+"|/cc +"+channel+"<° °>sm_00.gif<°")
    };

    this.onAppStart = function() {
        bot = KnuddelsServer.getDefaultBotUser();
        bot.sendPublicMessage("Ich bin wieder da :D");
    };

    this.onShutdown = function() {
        bot.sendPublicMessage("Bin mal ne weile weg...");
    };
}();

Sofern ich als erster joine kommt nur sehr selten mal die Begrüßung, die Log-Meldung innerhalb des setTimeout-Callbacks wird allerdings angezeigt. Genauso wenn ich leave: Die Private Meldung kommt nicht an. Hier allerdings auch nicht die Log-Meldung.

Platziere ich einen Zweitnick im Channel und joine/leave dann, tritt das Problem nicht auf.

Comments (3)

  1. Tobias Kunicke reporter

    Die onShutdown wird beim restart übrigens garnicht aufgerufen, beim herunterfahren (disable) schon. Ist das gewollt?

  2. Dennis Dudek

    Ês wäre möglich dass onUserJoined vor onAppStart bereits gecalled wird probier mal bot = KnuddelsServer.getDefaultBotUser(); direkt am anfang zu callen, denn die Funktion funktioniert auch, wenn die App nicht voll durchgestartet ist

  3. Tobias Kunicke reporter

    "probier mal bot = KnuddelsServer.getDefaultBotUser(); direkt am anfang zu callen" so hatte ich es vorher, da hatte ich das Problem vermutet, daher ist es jetzt in onAppStart. Wenn bot undefined wäre, würde ich aber zumindest eine Fehlermeldung bekommen, die bekomme ich aber nicht.

  4. Log in to comment