-
Notifications
You must be signed in to change notification settings - Fork 1
Benutzer und Nachrichten
Marc Staebler edited this page Mar 25, 2026
·
3 revisions
Dieses Kapitel erklärt, wie du mit Nutzern interagierst und verschiedene Nachrichtentypen versendest.
Jeder Nutzer im Channel wird durch ein User-Objekt repräsentiert. Du erhältst es über Hooks, Chat-Befehle oder Lookup-Methoden.
// 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.
},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?// 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 PixelnUm 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...
}
}// Nur menschliche Nutzer
var menschen = KnuddelsServer.getChannel().getOnlineUsers(UserType.Human);
// Alle Nutzer (inkl. Bots)
var alle = KnuddelsServer.getChannel().getOnlineUsers(UserType.Human, UserType.AppBot);Jede App hat einen BotUser, der öffentlich Nachrichten senden kann. Er wird bei der Installation der App erstellt.
var bot = KnuddelsServer.getDefaultBotUser();// Öffentliche Nachricht im Channel
bot.sendPublicMessage('Hallo zusammen!');
// Öffentliche Action-Nachricht ("Bot tanzt")
bot.sendPublicActionMessage('tanzt fröhlich durch den Channel');// Private Nachricht an einen Nutzer
bot.sendPrivateMessage('Hallo!', user);
// Private Nachricht an mehrere Nutzer
bot.sendPrivateMessage('Wichtige Ankündigung!', user1, user2, user3);// Private Nachricht vom System (nicht vom Bot)
user.sendPrivateMessage('Dies ist eine Systemnachricht.');
// Post-Nachricht (Messenger, funktioniert auch offline)
user.sendPostMessage('Betreff', 'Nachrichtentext');// 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();
},// Innerhalb von var App = { ... };
onPrivateMessage: function(privateMessage) {
var autor = privateMessage.getAuthor();
var text = privateMessage.getText();
autor.sendPrivateMessage('Danke für deine Nachricht!');
},Wird ausgelöst durch /me-Nachrichten:
// Innerhalb von var App = { ... };
onPublicActionMessage: function(publicActionMessage) {
var autor = publicActionMessage.getAuthor();
var text = publicActionMessage.getText();
},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.
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<°'
);
}
};- Erste Schritte – Voraussetzungen, Einrichtung, deine erste App
-
Projektstruktur – Dateien, Ordner und
app.config - Dev-Server – Entwicklungsumgebung und Testen
-
App-Lifecycle und Hooks –
onAppStart,onUserJoinedund Co. -
Server-API Grundlagen –
KnuddelsServer,Channel,Logger - Client-Server-Kommunikation – Events zwischen Frontend und Backend
-
Benutzer und Nachrichten –
User,BotUser, Nachrichten senden - HTML-UI und AppContent – Popups, Overlays, Globale Apps-UI
-
Datenspeicherung –
AppPersistence,UserPersistence -
Knuddel und Zahlungen – Transfers, Käufe,
KnuddelAccount - Toplisten – Ranglisten und Highscores
- Globale Apps – Apps im "Apps & Spiele"-Menü
- Quests – Aufgaben für Nutzer
- Externe Server-Kommunikation – HTTP-Requests an externe APIs
- Tutorials – Übersicht aller Tutorials
- Tic-Tac-Toe – Multiplayer-Spiel mit Bestenliste
- Best Practices – Tipps, Limits und häufige Fehler
- FAQ – Häufig gestellte Fragen
- KCode-Formatierung – Nachrichten-Formatierung mit KCode