Skip to content

Benutzer und Nachrichten

Marc Staebler edited this page Mar 25, 2026 · 3 revisions

Benutzer und Nachrichten

Dieses Kapitel erklärt, wie du mit Nutzern interagierst und verschiedene Nachrichtentypen versendest.


Das User-Objekt

Jeder Nutzer im Channel wird durch ein User-Objekt repräsentiert. Du erhältst es über Hooks, Chat-Befehle oder Lookup-Methoden.

Grundlegende Eigenschaften

// Innerhalb von var App = { ... };
onUserJoined: function(user) {
    var nick      = user.getNick();           // Nickname
    var userId    = user.getUserId();         // Numerische ID
    var alter     = user.getAge();            // Alter
    var geschlecht = user.getGender();        // Gender.Male, Gender.Female, etc.
    var status    = user.getUserStatus();     // UserStatus.Newbie, .User, etc.
    var regDatum  = user.getRegDate();        // Registrierungsdatum
    var clientTyp = user.getClientType();     // ClientType.Browser, .Android, etc.
},

Status-Abfragen

var istOnline       = user.isOnlineInChannel();  // Gerade im Channel?
var istOwner        = user.isChannelOwner();      // Channel-Besitzer?
var istModerator    = user.isChannelModerator();  // Moderator?
var istAppManager   = user.isAppManager();        // App-Manager?
var istVerifiziert  = user.isAgeVerified();       // Alter verifiziert?
var istGesperrt     = user.isLocked();            // Gesperrt?
var istStumm        = user.isMuted();             // Gemutet?
var hatProfilbild   = user.hasProfilePhoto();     // Hat Profilbild?

Profilinformationen

// Profillink (zum Einbetten in Nachrichten)
var link = user.getProfileLink();
// Ergebnis: °>nick|nick<° (klickbar im Chat)

// Profillink mit eigenem Text
var linkMitText = user.getProfileLink('Hier klicken');

// Profilbild-URL
var foto = user.getProfilePhoto(100, 100);  // Breite, Höhe in Pixeln

User-Dokumentation


Nutzer nachschlagen

Um einen Nutzer anhand seines Nicknamens zu finden:

var nick = 'SomeAwesomeNick';
var userAccess = KnuddelsServer.getUserAccess();

if (userAccess.exists(nick)) {
    var userId = userAccess.getUserId(nick);
    if (userAccess.mayAccess(userId)) {
        var user = userAccess.getUserById(userId);
        // user-Objekt verwenden...
    }
}

Alle Online-Nutzer im Channel

// Nur menschliche Nutzer
var menschen = KnuddelsServer.getChannel().getOnlineUsers(UserType.Human);

// Alle Nutzer (inkl. Bots)
var alle = KnuddelsServer.getChannel().getOnlineUsers(UserType.Human, UserType.AppBot);

BotUser – Der App-Bot

Jede App hat einen BotUser, der öffentlich Nachrichten senden kann. Er wird bei der Installation der App erstellt.

var bot = KnuddelsServer.getDefaultBotUser();

Öffentliche Nachrichten

// Öffentliche Nachricht im Channel
bot.sendPublicMessage('Hallo zusammen!');

// Öffentliche Action-Nachricht ("Bot tanzt")
bot.sendPublicActionMessage('tanzt fröhlich durch den Channel');

Private Nachrichten

// Private Nachricht an einen Nutzer
bot.sendPrivateMessage('Hallo!', user);

// Private Nachricht an mehrere Nutzer
bot.sendPrivateMessage('Wichtige Ankündigung!', user1, user2, user3);

Nachrichten direkt über User senden

// Private Nachricht vom System (nicht vom Bot)
user.sendPrivateMessage('Dies ist eine Systemnachricht.');

// Post-Nachricht (Messenger, funktioniert auch offline)
user.sendPostMessage('Betreff', 'Nachrichtentext');

BotUser-Dokumentation


Nachrichtentypen

PublicMessage – Öffentliche Channel-Nachricht

// Innerhalb von var App = { ... };
onPublicMessage: function(publicMessage) {
    var autor = publicMessage.getAuthor();    // User-Objekt
    var text = publicMessage.getText();       // Verarbeiteter Text
    var rawText = publicMessage.getRawText(); // Original-Text
    var datum = publicMessage.getCreationDate();
},

PrivateMessage – Private Nachricht

// Innerhalb von var App = { ... };
onPrivateMessage: function(privateMessage) {
    var autor = privateMessage.getAuthor();
    var text = privateMessage.getText();
    autor.sendPrivateMessage('Danke für deine Nachricht!');
},

PublicActionMessage – Action-Nachricht

Wird ausgelöst durch /me-Nachrichten:

// Innerhalb von var App = { ... };
onPublicActionMessage: function(publicActionMessage) {
    var autor = publicActionMessage.getAuthor();
    var text = publicActionMessage.getText();
},

Message-Dokumentation


KCode – Nachrichten formatieren

In Nachrichten kannst du KCode verwenden, um Links, Formatierungen und Befehle einzubetten:

// Klickbarer Link der einen Befehl ausführt
bot.sendPublicMessage('Klicke °>/meinBefehl|hier<° um zu starten!');

// Fettgedruckt
bot.sendPublicMessage('_Das ist fett_');

// Profil-Link
bot.sendPublicMessage('Willkommen, ' + user.getProfileLink() + '!');

Mehr dazu unter KCode-Formatierung.


Praxisbeispiel: Begrüßungs-Bot

var App = {

    onAppStart: function() {
        KnuddelsServer.getDefaultLogger().info('Begrüßungs-Bot gestartet');
    },

    onUserJoined: function(user) {
        var bot = KnuddelsServer.getDefaultBotUser();
        var stunde = new Date().getHours();
        var gruss;

        if (stunde < 12) {
            gruss = 'Guten Morgen';
        } else if (stunde < 18) {
            gruss = 'Guten Tag';
        } else {
            gruss = 'Guten Abend';
        }

        bot.sendPublicMessage(gruss + ', ' + user.getProfileLink() + '! Willkommen im Channel.');

        // Private Nachricht mit Hilfe
        user.sendPrivateMessage(
            'Verfügbare Befehle: °>/hilfe|/hilfe<° und °>/regeln|/regeln<°'
        );
    }
};

API-Referenz


← Zurück zur Übersicht

Navigation

Einstieg

Kernkonzepte

Features

Tutorials

Referenz & Hilfe

Clone this wiki locally