diff --git a/types/knuddels-userapps-api/index.d.ts b/types/knuddels-userapps-api/index.d.ts index 36c0c139de..baff7689f8 100644 --- a/types/knuddels-userapps-api/index.d.ts +++ b/types/knuddels-userapps-api/index.d.ts @@ -1,2741 +1,2933 @@ -// Type definitions for Knuddels UserApps API 1.0 +// Type definitions for Knuddels UserApps API 1.00108823 // Project: https://developer.knuddels.de // Definitions by: Knuddels GmbH & Co. KG // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // JSON definition -interface Json { +export interface Json { [x: string]: string | number | boolean | Date | Json | JsonArray; } -// tslint:disable-next-line no-empty-interface -interface JsonArray extends Array { } +export interface JsonArray extends Array { } + // serializable objects (for persistence) -type KnuddelsSerializable = string | number | boolean | User | BotUser; -interface KnuddelsJson { +export type KnuddelsSerializable = string | number | boolean | User | BotUser; +export interface KnuddelsJson { [x: string]: string | number | boolean | Date | KnuddelsJson | KnuddelsJsonArray | KnuddelsSerializable; } -// tslint:disable-next-line no-empty-interface -interface KnuddelsJsonArray extends Array { } +export interface KnuddelsJsonArray extends Array { } + // "data" that may be send between apps and between server and client -type KnuddelsEvent = string | Json | KnuddelsEventArray; -// tslint:disable-next-line no-empty-interface -interface KnuddelsEventArray extends Array { } +export type KnuddelsEvent = string | Json | KnuddelsEventArray; +export interface KnuddelsEventArray extends Array { } -/** - * App ist die abstrakte Klasse einer konkreten App, die ein Entwickler schreiben kann. - * Im eigenen Javascript-Code muss eine Variable mit dem Namen App vorhanden sein, damit eine App lauffähig ist. - */ -interface App { +declare global { /** - * Dieses Methode wird aufgerufen, sobald ein Nutzer versucht den Channel zu betreten. - * Die App kann nun entscheiden, ob der Nutzer den Channel betreten darf. - * - * Hinweis: Um ein responsives User Interface für den Nutzer, - * der den Channel betreten möchte zu garantieren, muss die App innerhalb von einer Sekunde auf diese Anfrage reagieren, - * damit ihre Antwort in das Ergebnis einfliesst. - * - * Mit bestimmten Smileyfeatures ist es derzeit trotzdem möglich, den Channel zu betreten. - * Diese Nutzer können nicht ausgesperrt werden: - *
    - *
  • Channelbesitzer
  • - *
  • Channelmoderatoren und HZAs
  • - *
  • Admins (sofern notwendig)
  • - *
  • Sysadmins
  • - *
  • User Apps Team (Mitarbeiter von Knuddels)
  • - *
- * - * Ist der Channel mit einem Passwort geschützt und der Nutzer, der versucht den Channel zu betreten kennt das Passwort, - * so kann er nicht aus dem Channel ausgeschlossen werden. + * @see https://developer.knuddels.de/docs/classes/App.html */ - mayJoinChannel?(user: User): ChannelJoinPermission; - /** - * Diese Methode wird jedes Mal aufgerufen, sobald ein Nutzer versucht eine öffentliche Nachricht zu senden. - * Die App kann nun entscheiden, ob die Nachricht veröffentlicht werden darf. - * - * Laufen mehrere Apps im selben Channel, so wird die Nachricht veröffentlicht, sofern alle Apps es erlauben. - * - * Dauert das Fragen aller Apps nach Erlaubnis länger als 10 Sekunden, so wird die Antwort genutzt, die bis dahin - * gegeben wurde. - */ - mayShowPublicMessage?(publicMessage: PublicMessage): boolean; - /** - * Diese Methode wird jedes Mal aufgerufen, sobald ein Nutzer versucht eine öffentliche Handlung auszuführen. - * Die App kann nun entscheiden, ob die Handlung ausgeführt werden darf. - * - * Laufen mehrere Apps im selben Channel, so wird die Handlung ausgeführt, sofern alle Apps es erlauben. - * - * Dauert das Fragen aller Apps nach Erlaubnis länger als 10 Sekunden, so wird die Antwort genutzt, die bis dahin - * gegeben wurde. - */ - mayShowPublicActionMessage?(publicActionMessage: PublicActionMessage): boolean; - /** - * Diese Methode wird aufgerufen, sobald die App startet. - * Dies ist der beste Zeipunkt um Werte zu initialisieren und aus der Persistenz zu lesen. - */ - onAppStart?(): void; - /** - * Diese Methode wird aufgerufen, wenn ein User Knuddel an den BotUser gesendet hat. - * Es ist die Aufgabe der App in dieser Methode zu entscheiden, ob sie die Knuddel annimmt oder ablehnt. - * Wird diese Methode von der App nicht implementiert, so werden Knuddel automatisch akzeptiert. - * Ist diese Methode implementiert und es treten Fehler (Exceptions, Timeout,...) auf oder der Entwickler entscheidet nicht, - * was mit den Knuddel geschehen soll, so werden diese vom App-System automatisch an den Absender zurück geschickt. - *
- * Wichtig: Zum Zeitpunkt des Aufrufs dieser Methode wurden die Knuddel noch nicht an den BotUser übertragen. - */ - onBeforeKnuddelReceived?(knuddelTransfer: KnuddelTransfer): void; - /** - * Diese Methode wird aufgerufen, sobald ein BotUser Knuddel von einem User erhalten hat. - */ - onKnuddelReceived?(sender: User, receiver: BotUser, knuddelAmount: KnuddelAmount, transferReason: string): void; - /** - * Diese Methode wird aufgerufen, wenn die App sich darauf vorbereiten soll heruntergefahren zu werden. - * Als Parameter wird die geschätzte Zeit übergeben, die die App noch hat, bis sie heruntergefahren wird - * und der Aufruf App/onShutdown:event folgt. - * - * App/onPrepareShutdown:event kann dazu benutzt werden das Nutzererlebnis zu verbessern, - * sofern eine App heruntergefahren werden muss (bsp. für Updates). - * Eine Spiele-App könnte z.B. entscheiden, dass sie keine weiteren Spiele eröffnet und den Spielern offener Spiele - * die Information anzeigt, wie lange das Spiel noch läuft, bevor es unentschieden endet. - * - *

Achtung: Die Methode kann im Lebenszyklus einer App mehrfach aufgerufen werden. - */ - onPrepareShutdown?(secondsTillShutdown: number): void; - /** - * Diese Methode wird aufgerufen, wenn ein BotUser privat angeschrieben wird. - */ - onPrivateMessage?(privateMessage: PrivateMessage): void; - /** - * Diese Methode wird aufgerufen, wenn im Channel der App - * eine öffentliche Nachricht geschrieben wird. - * Für Nachrichten von BotUsern wird diese Methode nicht aufgerufen. - */ - onPublicMessage?(publicMessage: PublicMessage): void; - /** - * Diese Methode wird aufgerufen, wenn im Channel der App - * eine Event-Nachricht veröffentlicht wird. - * Für Nachrichten von BotUsern wird diese Methode nicht aufgerufen. - */ - onPublicEventMessage?(publicEventMessage: PublicEventMessage): void; - /** - * Diese Methode wird aufgerufen, wenn im Channel der App - * eine öffentliche Handlung durchgeführt wird. - * Für Handlungen von BotUsern wird diese Methode nicht aufgerufen. - */ - onPublicActionMessage?(publicActionMessage: PublicActionMessage): void; - /** - * Diese Methode wird aufgerufen, wenn eine App beendet wird. - * Sobald diese Methode aufgerufen wird, steht nur noch ein begrenzter Teil der API zur Verfügung. - * Die App sollte den kompletten Zustand in der Persistenz speichern, sodass der Zustand - * beim nächsten App/onAppStart:event wiederhergestellt werden kann. - * - * Während des Shutdowns können asynchrone each-Methoden, wie UserPersistenceNumbers/each:method - * und UserAccess/eachAccessibleUser:method nicht zuverlässig genutzt werden. - */ - onShutdown?(): void; - /** - * Diese Methode wird aufgerufen, wenn ein User im Channel der App - * über die Systemfunktionen (/dice, /diceo) würfelt. - * Die App kann auf das Ergebnis zugreifen und die Daten für die Auswertung und Entscheidungen nutzen. - */ - onUserDiced?(diceEvent: DiceEvent): void; - /** - * Diese Methode wird aufgerufen, wenn ein User den Channel der App betritt. - */ - onUserJoined?(user: User): void; - /** - * Diese Methode wird aufgerufen, wenn ein User den Channel der App verlässt. - */ - onUserLeft?(user: User): void; - /** - * Diese Methode wird aufgerufen, wenn aus einer anderen App ein Event mit sendAppEvent versendet wurde. - */ - onAppEventReceived?(appInstance: AppInstance, type: string, data: KnuddelsEvent): void; - /** - * Diese Methode wird aufgerufen, wenn aus dem HTML User Interface ein Event mit - * sendEvent() gesendet wurde. - */ - onEventReceived?(user: User, type: string, data: KnuddelsEvent, appContentSession: AppContentSession): void; - /** - * Diese Methode wird aufgerufen, wenn ein User Knuddel in seinen KnuddelAccount - * eingezahlt hat. - */ - onAccountReceivedKnuddel?(sender: User, receiver: BotUser, knuddelAmount: KnuddelAmount, transferReason: string, knuddelAccount: KnuddelAccount): void; - /** - * Diese Methode wird aufgerufen, wenn sich die Anzahl der Knuddel auf einem KnuddelAccount eines User - * geändert hat. - */ - onAccountChangedKnuddelAmount?(user: User, knuddelAccount: KnuddelAccount, oldKnuddelAmount: KnuddelAmount, newKnuddelAmount: KnuddelAmount): void; - /** - * Ermöglicht das Registrieren eigener Chatbefehle. - * In einem Channel kann nur eine App laufen, die einen bestimmten Chatbefehl nutzt. - * Versucht eine zweite App einen Chatbefehl zu registrieren, den eine andere - * App bereits nutzt, so wird ein Fehler geloggt und die App startet nicht bzw. fährt herunter. - * - * Die Struktur eines registrierten Chatbefehls ist: - * commandName: function (user, params, command) {} - * - * - *
    - *
  • commandName ist der Name der Funktion, wie sie aufgerufen wird (beispielsweise /commandname)
  • - *
  • user ist der Nutzer, der die Funktion aufgerufen hat
  • - *
  • params sind die Parameter, die der Nutzer hinter dem Befehl eingegeben hat (beispielsweise /commandname params)
  • - *
  • command ist der Name des Befehl selbst (beispielsweise commandName)
  • - *
- */ - chatCommands?: { [commandName: string]: (user: User, params: string, command: string) => void }; -} + interface App { + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_mayJoinChannel + */ + mayJoinChannel?( + user: User + ): ChannelJoinPermission; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_mayShowPublicMessage + */ + mayShowPublicMessage?( + publicMessage: PublicMessage + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_mayShowPublicActionMessage + */ + mayShowPublicActionMessage?( + publicActionMessage: PublicActionMessage + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onAppStart + */ + onAppStart?(): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onBeforeKnuddelReceived + */ + onBeforeKnuddelReceived?( + knuddelTransfer: KnuddelTransfer + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onKnuddelReceived + */ + onKnuddelReceived?( + sender: User, + receiver: BotUser, + knuddelAmount: KnuddelAmount, + transferReason: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onPrepareShutdown + */ + onPrepareShutdown?( + secondsTillShutdown: number + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onPrivateMessage + */ + onPrivateMessage?( + privateMessage: PrivateMessage + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onPublicMessage + */ + onPublicMessage?( + publicMessage: PublicMessage + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onPublicEventMessage + */ + onPublicEventMessage?( + publicEventMessage: PublicEventMessage + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onPublicActionMessage + */ + onPublicActionMessage?( + publicActionMessage: PublicActionMessage + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onShutdown + */ + onShutdown?(): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onUserDiced + */ + onUserDiced?( + diceEvent: DiceEvent + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onUserJoined + */ + onUserJoined?( + user: User + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onUserLeft + */ + onUserLeft?( + user: User + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onAppEventReceived + */ + onAppEventReceived?( + appInstance: AppInstance, + type: string, + data: KnuddelsEvent + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onEventReceived + */ + onEventReceived?( + user: User, + type: string, + data: KnuddelsEvent, + appContentSession: AppContentSession + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onAccountReceivedKnuddel + */ + onAccountReceivedKnuddel?( + sender: User, + receiver: BotUser, + knuddelAmount: KnuddelAmount, + transferReason: string, + knuddelAccount: KnuddelAccount + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onAccountChangedKnuddelAmount + */ + onAccountChangedKnuddelAmount?( + user: User, + knuddelAccount: KnuddelAccount, + oldKnuddelAmount: KnuddelAmount, + newKnuddelAmount: KnuddelAmount + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onUserDeleted + */ + onUserDeleted?( + userId: number, + userPersistence: UserPersistence + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_onDeveloperCommand + * @since AppServer 108662, ChatServer 108662 + */ + onDeveloperCommand?( + user: User, + params: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#method_mayUserDice + */ + mayUserDice?( + user: User, + diceConfig: DiceConfiguration + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/App.html#property_chatCommands + */ + chatCommands?: { [commandName: string]: (user: User, params: string, command: string) => void }; + } -/** - * Ermöglicht Zugriff auf Informationen zu Apps und Events zwischeneinander. - * - * Die Instanz von AppAccess erhält man über den KnuddelsServer - * mit KnuddelsServer.getAppAccess() - */ -declare class AppAccess { /** - * Liefert die Instanz der eigenen App. + * @see https://developer.knuddels.de/docs/classes/AppAccess.html */ - getOwnInstance(): AppInstance; - /** - * Liefert die Instanzen aller anderen Apps, die gerade in diesem Channel laufen. - * @since AppServer 82904 - */ - getAllRunningAppsInChannel(includeSelf?: boolean): AppInstance[]; - /** - * Liefert die Instanzen aller anderen Apps, die gerade in diesem Channel laufen. - * @since AppServer 82904 - */ - getRunningAppInChannel(appId: string): (AppInstance|null); -} + class AppAccess { + /** + * @see https://developer.knuddels.de/docs/classes/AppAccess.html#method_getOwnInstance + */ + getOwnInstance(): AppInstance; + /** + * @see https://developer.knuddels.de/docs/classes/AppAccess.html#method_getAllRunningAppsInChannel + * @since AppServer 82904 + */ + getAllRunningAppsInChannel( + includeSelf?: boolean + ): AppInstance[]; + /** + * @see https://developer.knuddels.de/docs/classes/AppAccess.html#method_getRunningAppInChannel + * @since AppServer 82904 + */ + getRunningAppInChannel( + appId: string + ): (AppInstance|null); + } -/** - * Repräsentiert den visuellen Inhalt einer Applikation, der Usern angezeigt werden soll. - */ -declare class AppContent { /** - * Liefert den AppViewMode. + * @see https://developer.knuddels.de/docs/classes/AppContent.html */ - getAppViewMode(): AppViewMode; - /** - * Liefert das HTMLFile, das beim Anlegen des AppContents - * genutzt wurde. - */ - getHTMLFile(): HTMLFile; - /** - * Liefert die Breite des AppContent. - */ - getWidth(): number; - /** - * Liefert die Höhe des AppContent. - */ - getHeight(): number; - /** - * Liefert die LoadConfiguration, mit der die Optik beim Laden des HTML User Interface beeinflusst werden kann. - */ - getLoadConfiguration(): LoadConfiguration; - /** - * Liefert einen AppContent, der das HTMLFile als Overlay oben rechts im Channel anzeigt. - */ - static overlayContent(htmlFile: HTMLFile, width: number, height: number): AppContent; - /** - * Liefert einen AppContent, der das HTMLFile als Overlay (200x350) oben rechts im Channel anzeigt. - */ - static overlayContent(htmlFile: HTMLFile): AppContent; - /** - * Liefert einen AppContent, der das HTMLFile im Applet/HTML-Chat - * als Popup (300x400) und auf Android als Fullscreen-View anzeigt. - */ - static popupContent(htmlFile: HTMLFile): AppContent; - /** - * Liefert einen AppContent, der das HTMLFile im Applet/HTML-Chat - * als Popup und auf Android als Fullscreen-View anzeigt. - */ - static popupContent(htmlFile: HTMLFile, width: number, height: number): AppContent; - /** - * Sendet Daten an alle Nutzer, die diesen AppContent geöffnet haben. - */ - sendEvent(type: string, data?: KnuddelsEvent): void; - /** - * Liefert eine Liste aller User, die diesen AppContent - * geöffnet haben. - */ - getUsers(): User[]; - /** - * Liefert eine Liste aller AppContentSessions, die dieses AppContent, - * die User gerade geöffnet haben. - */ - getSessions(): AppContentSession[]; - /** - * Ersetzt den AppContent, bei allen Usern, die diesen AppContent - * geöffnet haben durch den neuen AppContent. - * - *

Hinweis: Es können nur AppContent mit demselben AppViewMode - * zum Ersetzen genutzt werden. - */ - replaceWithAppContent(newAppContent: AppContent): void; - /** - * Entfernt diesen AppContent, bei allen Usern, die diesen AppContent - * geöffnet haben. - */ - remove(): void; - /** - * Fügt einen Listener hinzu, der aufgerufen wird, wenn jemand den AppContent schließt. - */ - addCloseListener(callback: { user: User; appContent: AppContent; }): void; -} + class AppContent { + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_getAppViewMode + */ + getAppViewMode(): AppViewMode; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_getHTMLFile + */ + getHTMLFile(): HTMLFile; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_getWidth + */ + getWidth(): number; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_getHeight + */ + getHeight(): number; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_getLoadConfiguration + */ + getLoadConfiguration(): LoadConfiguration; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_overlayContent + */ + static overlayContent( + htmlFile: HTMLFile, + width: number, + height: number + ): AppContent; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_overlayContent + */ + static overlayContent( + htmlFile: HTMLFile + ): AppContent; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_popupContent + */ + static popupContent( + htmlFile: HTMLFile + ): AppContent; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_popupContent + */ + static popupContent( + htmlFile: HTMLFile, + width: number, + height: number + ): AppContent; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_sendEvent + */ + sendEvent( + type: string, + data?: KnuddelsEvent + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_getUsers + */ + getUsers(): User[]; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_getSessions + */ + getSessions(): AppContentSession[]; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_replaceWithAppContent + */ + replaceWithAppContent( + newAppContent: AppContent + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_remove + */ + remove(): void; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_addCloseListener + */ + addCloseListener( + callback: { + user: User; + appContent: AppContent; + } + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_setAllowJFXBrowser + */ + setAllowJFXBrowser( + allowJFXBrowser: boolean + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/AppContent.html#method_isAllowJFXBrowser + */ + isAllowJFXBrowser(): boolean; + } -/** - * Repräsentiert den visuellen Inhalt einer App, der einem User angezeigt wird. - */ -declare class AppContentSession { /** - * Sendet Daten an den verbundenen Client. + * @see https://developer.knuddels.de/docs/classes/AppContentSession.html */ - sendEvent(type: string, data?: KnuddelsEvent): void; - /** - * Liefert den AppViewMode. - */ - getAppViewMode(): AppViewMode; - /** - * Entfernt die AppContentSession beim verbundenen User. - */ - remove(): void; - /** - * Liefert den User. - */ - getUser(): User; - /** - * Liefert den verbundenen AppContent. - */ - getAppContent(): AppContent; -} + class AppContentSession { + /** + * @see https://developer.knuddels.de/docs/classes/AppContentSession.html#method_sendEvent + */ + sendEvent( + type: string, + data?: KnuddelsEvent + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/AppContentSession.html#method_getAppViewMode + */ + getAppViewMode(): AppViewMode; + /** + * @see https://developer.knuddels.de/docs/classes/AppContentSession.html#method_remove + */ + remove(): void; + /** + * @see https://developer.knuddels.de/docs/classes/AppContentSession.html#method_getUser + */ + getUser(): User; + /** + * @see https://developer.knuddels.de/docs/classes/AppContentSession.html#method_getAppContent + */ + getAppContent(): AppContent; + } -/** - * Die Instanz von AppInfo zur laufenden App erhält man über die AppInstance - * mit appInstance.getAppInfo() - */ -declare class AppInfo { /** - * Liefert die AppUid. - * Diese ist für jede Sub-Channel Instanz der App unterschiedlich. - * Wenn RootAppUid == AppUid dann ist dies die Root-App-Instanz. + * @see https://developer.knuddels.de/docs/classes/AppInfo.html */ - getAppUid(): number; - /** - * Liefert die RootAppUid. - * Diese ist für jede Sub-Channel Instanz der App gleich. - * Wenn RootAppUid == AppUid dann ist dies die Root-App-Instanz. - * - * Sie wird für den Link für Auszahlungen aus einem Knuddel-Account benötigt: /knuddelaccount payout:<RootAppUid>:<BETRAG> - */ - getRootAppUid(): number; - /** - * Liefert den in der Konfiguration eingestellten Namen der App. - */ - getAppName(): string; - /** - * Liefert die Version der App, die in der Konfiguration eingestellt wurde. - */ - getAppVersion(): string; - /** - * Liefert die eindeutige Id der App. - * Die appId setzt sich zusammen aus - *
    - *
  • id des Entwicklungsservers
  • - *
  • FTP-Nutzername
  • - *
  • Ordnername der App -> appKey
  • - *
- */ - getAppId(): string; - /** - * Liefert den eindeutigen Key der App. - * Der appKey ist der Ordnername, in dem die App liegt. - */ - getAppKey(): string; - /** - * Liefert den Entwickler der App, falls die serverId knuddelsDE oder knuddelsDEV ist, ansonsten null. - */ - getAppDeveloper(): User; - /** - * Liefert die Liste der AppManager für diese App. Die Channelbesitzer zählen automatisch auch als AppManager. - */ - getAppManagers(): User[]; - /** - * Liefert den Steuersatz, der bei Auszahlung bereits genutzer Knuddel von einem - * KnuddelAccount an einen User - * anfällt. Die anfallenden Steuern werden bei Auszahlung vom BotUser - * abgezogen. - */ - getTaxRate(): number; - /** - * Liefert den KnuddelAmount, der an Steuern anfallen würde, - * wenn alle User jetzt all ihre Knuddel aus ihrem - * KnuddelAccount abheben würden. - */ - getTotalTaxKnuddelAmount(): KnuddelAmount; - /** - * Liefert den KnuddelAmount, der jetzt noch vom - * BotUser an KnuddelAccounts - * übertragen werden kann, so dass für alle Knuddel noch die Steuern bezahlt werden können. - */ - getMaxPayoutKnuddelAmount(): KnuddelAmount; -} + class AppInfo { + /** + * @see https://developer.knuddels.de/docs/classes/AppInfo.html#method_getAppUid + */ + getAppUid(): number; + /** + * @see https://developer.knuddels.de/docs/classes/AppInfo.html#method_getRootAppUid + */ + getRootAppUid(): number; + /** + * @see https://developer.knuddels.de/docs/classes/AppInfo.html#method_getAppName + */ + getAppName(): string; + /** + * @see https://developer.knuddels.de/docs/classes/AppInfo.html#method_getAppVersion + */ + getAppVersion(): string; + /** + * @see https://developer.knuddels.de/docs/classes/AppInfo.html#method_getAppId + */ + getAppId(): string; + /** + * @see https://developer.knuddels.de/docs/classes/AppInfo.html#method_getAppKey + */ + getAppKey(): string; + /** + * @see https://developer.knuddels.de/docs/classes/AppInfo.html#method_getAppDeveloper + */ + getAppDeveloper(): User; + /** + * @see https://developer.knuddels.de/docs/classes/AppInfo.html#method_getAppManagers + */ + getAppManagers(): User[]; + /** + * @see https://developer.knuddels.de/docs/classes/AppInfo.html#method_getTaxRate + */ + getTaxRate(): number; + /** + * @see https://developer.knuddels.de/docs/classes/AppInfo.html#method_getTotalTaxKnuddelAmount + */ + getTotalTaxKnuddelAmount(): KnuddelAmount; + /** + * @see https://developer.knuddels.de/docs/classes/AppInfo.html#method_getMaxPayoutKnuddelAmount + */ + getMaxPayoutKnuddelAmount(): KnuddelAmount; + } -/** - * Repräsentiert die Instanz einer App. - * - * Die eigene Instanz von AppInstance erhält man über das AppAccess-Objekt - * mit appAccess.getOwnInstance() - */ -declare class AppInstance { /** - * Liefert die AppInfo. + * @see https://developer.knuddels.de/docs/classes/AppInstance.html */ - getAppInfo(): AppInfo; - /** - * Sendet ein App-Event an diese App-Instanz. - */ - sendAppEvent(type: string, data: KnuddelsEvent): void; - /** - * Informiert, ob die aktuelle AppInstanz eine Root-Instanz ist. - */ - isRootInstance(): boolean; - /** - * Liefert die Root-Instanz der aktuellen App-Instanz. - */ - getRootInstance(): RootAppInstance; - /** - * Liefert alle App-Instanzen dieser App in diesem Channel und Subchannels. - * Mit includeSelf = false kann man die eigene Instanz ausschließen. - */ - getAllInstances(includeSelf?: boolean): AppInstance[]; - /** - * Liefert den Startzeitpunkt dieser AppInstance. - */ - getStartDate(): Date; - /** - * Liefert die Namen der ChatCommands, die diese AppInstnce derzeit registriert hat. - */ - getRegisteredChatCommandNames(): (string[]|null); - /** - * Liefert den Namen des Channels in dem diese AppInstance läuft. - */ - getChannelName(): string; -} + class AppInstance { + /** + * @see https://developer.knuddels.de/docs/classes/AppInstance.html#method_getAppInfo + */ + getAppInfo(): AppInfo; + /** + * @see https://developer.knuddels.de/docs/classes/AppInstance.html#method_sendAppEvent + */ + sendAppEvent( + type: string, + data: KnuddelsEvent + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/AppInstance.html#method_isRootInstance + */ + isRootInstance(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/AppInstance.html#method_getRootInstance + */ + getRootInstance(): RootAppInstance; + /** + * @see https://developer.knuddels.de/docs/classes/AppInstance.html#method_getAllInstances + */ + getAllInstances( + includeSelf?: boolean + ): AppInstance[]; + /** + * @see https://developer.knuddels.de/docs/classes/AppInstance.html#method_getStartDate + */ + getStartDate(): Date; + /** + * @see https://developer.knuddels.de/docs/classes/AppInstance.html#method_getRegisteredChatCommandNames + */ + getRegisteredChatCommandNames(): (string[]|null); + /** + * @see https://developer.knuddels.de/docs/classes/AppInstance.html#method_getChannelName + */ + getChannelName(): string; + } -/** - * Jede App besitzt eine AppPersistence in der global für diese App - * Informationen gespeichert werden können. An die Instanz der AppPersistence gelangt man durch den Aufruf - * KnuddelsServer.getPersistence();. - */ -declare class AppPersistence extends Persistence { -} + /** + * @see https://developer.knuddels.de/docs/classes/AppPersistence.html + */ + class AppPersistence extends Persistence { + } -/** - * Eine Instanz eines AppProfileEntry repräsentiert einen von einer App erzeugen Profileintrag in Profilen von Usern. - */ -declare class AppProfileEntry { /** - * Liefert den key für den die Topliste, die den Profileintrag erzeugt angelegt wurde. + * @see https://developer.knuddels.de/docs/classes/AppProfileEntry.html */ - getKey(): string; - /** - * Liefert den getDisplayType - */ - getDisplayType(): ToplistDisplayType; - /** - * Liefert das Toplist-Objekt. - */ - getToplist(): Toplist; -} + class AppProfileEntry { + /** + * @see https://developer.knuddels.de/docs/classes/AppProfileEntry.html#method_getKey + */ + getKey(): string; + /** + * @see https://developer.knuddels.de/docs/classes/AppProfileEntry.html#method_getDisplayType + */ + getDisplayType(): ToplistDisplayType; + /** + * @see https://developer.knuddels.de/docs/classes/AppProfileEntry.html#method_getToplist + */ + getToplist(): Toplist; + } -/** - * Mit einer Instanz von AppProfileEntryAccess kann eine App - * AppProfileEntry-Objekte (Profileinträge) erzeugen und verwalten. - * - * Die Instanz für die AppProfileEntryAccess erhält man über das KnuddelsServer-Objekt - * mit KnuddelsServer.getAppProfileEntryAccess() - * - *

Achtung: Derzeit darf eine App bis zu fünf AppProfileEntries haben. - *

Achtung: Profileinträge werden nur dann angezeigt, wenn der Channel sichtbar ist. - */ -declare class AppProfileEntryAccess { /** - * Liefert die Liste aller AppProfileEntry-Objekte, die diese App erzeugt hat. + * @see https://developer.knuddels.de/docs/classes/AppProfileEntryAccess.html */ - getAllProfileEntries(): AppProfileEntry[]; - /** - * Liefert den AppProfileEntry für den übergebenen userPersistenceNumberKey. - */ - getAppProfileEntry(userPersistenceNumberKey: string): AppProfileEntry; - /** - * Erzeugt oder aktualisiert ein AppProfileEntry anhand der übergebenen Toplist - * und dem ToplistDisplayType und liefert den AppProfileEntry im Anschluss zurück. - * - * Profileinträge, die erzeugt werden, sind nur sichtbar, solange die App läuft und werden im Profil ausgeblendet, sofern die App aus ist. - */ - createOrUpdateEntry(toplist: Toplist, toplistDisplayType: ToplistDisplayType): AppProfileEntry; - /** - * Löscht den übergebenen AppProfileEntry. - */ - removeEntry(appProfileEntry: AppProfileEntry): void; -} + class AppProfileEntryAccess { + /** + * @see https://developer.knuddels.de/docs/classes/AppProfileEntryAccess.html#method_getAllProfileEntries + */ + getAllProfileEntries(): AppProfileEntry[]; + /** + * @see https://developer.knuddels.de/docs/classes/AppProfileEntryAccess.html#method_getAppProfileEntry + */ + getAppProfileEntry( + userPersistenceNumberKey: string + ): AppProfileEntry; + /** + * @see https://developer.knuddels.de/docs/classes/AppProfileEntryAccess.html#method_createOrUpdateEntry + */ + createOrUpdateEntry( + toplist: Toplist, + toplistDisplayType: ToplistDisplayType + ): AppProfileEntry; + /** + * @see https://developer.knuddels.de/docs/classes/AppProfileEntryAccess.html#method_removeEntry + */ + removeEntry( + appProfileEntry: AppProfileEntry + ): void; + } -/** - * Liefert Informationen über einen AppServer. - * - * Die Instanz von AppServerInfo erhält man über den KnuddelsServer - * mit KnuddelsServer.getAppServerInfo() - */ -declare class AppServerInfo extends ServerInfo { -} + /** + * @see https://developer.knuddels.de/docs/classes/AppServerInfo.html + */ + class AppServerInfo extends ServerInfo { + } -/** - * null - */ -declare class AppViewMode { /** - * + * @see https://developer.knuddels.de/docs/classes/AppViewMode.html */ - static readonly Overlay: AppViewMode; - /** - * Zum Öffnen eines Popups durch das HTML User Interface - */ - static readonly Popup: AppViewMode; -} + class AppViewMode { + /** + * @see https://developer.knuddels.de/docs/classes/AppViewMode.html#property_Overlay + */ + static readonly Overlay: AppViewMode; + /** + * @see https://developer.knuddels.de/docs/classes/AppViewMode.html#property_Popup + */ + static readonly Popup: AppViewMode; + } -/** - * Ein BotUser repräsentiert einen Nutzer, der für die App als Nutzer im Channel interagieren kann. - * - * Die Instanz für den Standard-BotUser erhält man über das KnuddelsServer-Objekt - * mit KnuddelsServer.getDefaultBotUser() - */ -declare class BotUser extends User { /** - * Sendet eine öffentliche Nachricht in den Channel. + * @see https://developer.knuddels.de/docs/classes/AuthenticityClassification.html */ - sendPublicMessage(message: string): void; - /** - * Sendet eine öffentliche Handlung in den Channel. - * Dies funktioniert so, als ob der BotUser /me TEXT im Chat eingeben würde. - */ - sendPublicActionMessage(actionMessage: string): void; - /** - * Sendet eine private Nachricht an bestimmte Nutzer. - */ - sendPrivateMessage(message: string, users?: User[]): void; - /** - * Sendet eine persistente Nachricht an einen bestimmten Nutzer. - */ - sendPostMessage(topic: string, text: string, receivingUser?: User): void; - /** - * Transferiert eine bestimmte Anzahl Knuddel an einen Zielnutzer oder KnuddelAccount.

- * Wichtiger Hinweis: Sollte die App versuchen mehr Knuddel zu transferieren, - * als sie besitzt, so wird der onError-Callback aufgerufen und die App transferiert so viele Knuddel, wie möglich. - * Zudem werden die Schulden für den Channelbesitzer gemerkt. Sobald sich der Channelbesitzer einloggt, erhält er einen Hinweis über offene Schulden - * und sollte diese direkt begleichen. - * Hat ein Channelbesitzer eine gewisse Menge Schulden angesammelt, so schalten wir alle Apps in diesem Channel ab. - *
Es können nur Knuddel transferiert werden zu Nutzern mit UserType.Human. - */ - transferKnuddel( - receivingUserOrAccount: User | KnuddelAccount, - knuddelAmount: KnuddelAmount, - displayReasonText: string): void; - transferKnuddel( - receivingUserOrAccount: User | KnuddelAccount, - knuddelAmount: KnuddelAmount, - parameters?: { - displayReasonText?: string; - transferDisplayType?: KnuddelTransferDisplayType; - onSuccess?(): void; - onError?(message: string): void; - }): void; -} + class AuthenticityClassification { + /** + * @see https://developer.knuddels.de/docs/classes/AuthenticityClassification.html#method_getDisplayText + * @since AppServer 94663, ChatServer 94663 + */ + getDisplayText(): string; + /** + * @see https://developer.knuddels.de/docs/classes/AuthenticityClassification.html#property_ServiceNotAvailable + */ + static readonly ServiceNotAvailable: AuthenticityClassification; + /** + * @see https://developer.knuddels.de/docs/classes/AuthenticityClassification.html#property_Unknown + */ + static readonly Unknown: AuthenticityClassification; + /** + * @see https://developer.knuddels.de/docs/classes/AuthenticityClassification.html#property_Trusted + */ + static readonly Trusted: AuthenticityClassification; + /** + * @see https://developer.knuddels.de/docs/classes/AuthenticityClassification.html#property_VeryTrusted + */ + static readonly VeryTrusted: AuthenticityClassification; + } -/** - * Ein Channel ist ein Raum in dem die App läuft. - * - * Die Instanz für den Channel erhält man über das KnuddelsServer-Objekt - * mit KnuddelsServer.getChannel() - */ -declare class Channel { /** - * Gibt Zugriff auf das ChannelConfiguration-Objekt des Channels. + * @see https://developer.knuddels.de/docs/classes/BotUser.html */ - getChannelConfiguration(): ChannelConfiguration; + class BotUser extends User { + /** + * @see https://developer.knuddels.de/docs/classes/BotUser.html#method_sendPublicMessage + */ + sendPublicMessage( + message: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/BotUser.html#method_sendPublicActionMessage + */ + sendPublicActionMessage( + actionMessage: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/BotUser.html#method_sendPrivateMessage + */ + sendPrivateMessage( + message: string, + users?: User[] + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/BotUser.html#method_sendPostMessage + */ + sendPostMessage( + topic: string, + text: string, + receivingUser?: User + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/BotUser.html#method_transferKnuddel + */ + transferKnuddel( + receivingUserOrAccount: (User|KnuddelAccount), + knuddelAmount: KnuddelAmount, + parameters?: { + displayReasonText?: string; + transferDisplayType?: KnuddelTransferDisplayType; + onSuccess?: () => void; + onError?: (message: string) => void; + } + ): void; + } + /** - * Gibt Zugriff auf das ChannelRestrictions-Objekt des Channels. + * @see https://developer.knuddels.de/docs/classes/Channel.html */ - getChannelRestrictions(): ChannelRestrictions; + class Channel { + /** + * @see https://developer.knuddels.de/docs/classes/Channel.html#method_getChannelConfiguration + */ + getChannelConfiguration(): ChannelConfiguration; + /** + * @see https://developer.knuddels.de/docs/classes/Channel.html#method_getChannelRestrictions + */ + getChannelRestrictions(): ChannelRestrictions; + /** + * @see https://developer.knuddels.de/docs/classes/Channel.html#method_getChannelDesign + * @since AppServer 87470, ChatServer 87470 + */ + getChannelDesign(): ChannelDesign; + /** + * @see https://developer.knuddels.de/docs/classes/Channel.html#method_getOnlineUsers + */ + getOnlineUsers( + ...userType: UserType[] + ): User[]; + /** + * @see https://developer.knuddels.de/docs/classes/Channel.html#method_isVideoChannel + */ + isVideoChannel(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/Channel.html#method_getVideoChannelData + */ + getVideoChannelData(): VideoChannelData; + /** + * @see https://developer.knuddels.de/docs/classes/Channel.html#method_getChannelName + */ + getChannelName(): string; + /** + * @see https://developer.knuddels.de/docs/classes/Channel.html#method_getRootChannelName + */ + getRootChannelName(): string; + /** + * @see https://developer.knuddels.de/docs/classes/Channel.html#method_getTalkMode + */ + getTalkMode(): ChannelTalkMode; + /** + * @see https://developer.knuddels.de/docs/classes/Channel.html#method_getAllUsersWithTalkPermission + */ + getAllUsersWithTalkPermission( + ...channelTalkPermission: ChannelTalkPermission[] + ): User[]; + /** + * @see https://developer.knuddels.de/docs/classes/Channel.html#method_isVisible + * @since AppServer 82202 + */ + isVisible(): boolean; + } + /** - * Gibt Zugriff auf das ChannelDesign-Objekt des Channels. + * @see https://developer.knuddels.de/docs/classes/ChannelConfiguration.html + */ + class ChannelConfiguration { + /** + * @see https://developer.knuddels.de/docs/classes/ChannelConfiguration.html#method_getChannelRights + */ + getChannelRights(): ChannelRights; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelConfiguration.html#method_getChannelInformation + */ + getChannelInformation(): ChannelInformation; + } + + /** + * @see https://developer.knuddels.de/docs/classes/ChannelDesign.html * @since AppServer 87470, ChatServer 87470 */ - getChannelDesign(): ChannelDesign; - /** - * Gibt Zugriff auf Nutzer, die gerade im Channel online sind. - */ - getOnlineUsers(...userType: UserType[]): User[]; - /** - * Liefert die Information, ob in diesem Channel Videos gestreamt werden können. - */ - isVideoChannel(): boolean; - /** - * Liefert die VideoChannelData des Channels. - */ - getVideoChannelData(): VideoChannelData; - /** - * Liefert den Namen des Channels. - */ - getChannelName(): string; - /** - * Liefert den Namen des Root-Channels (nur relevant, falls die App Tochterchannel haben kann). - */ - getRootChannelName(): string; - /** - * Liefert den ChannelTalkMode, in dem sich der Channel gerade befindet. - */ - getTalkMode(): ChannelTalkMode; - /** - * Liefert alle User, die bestimmte ChannelTalkPermissions haben. - */ - getAllUsersWithTalkPermission(...channelTalkPermission: ChannelTalkPermission[]): User[]; - /** - * Liefert die Information, ob der Channel sichtbar (true) oder unsichtbar (false) ist. - * @since AppServer 82202 - */ - isVisible(): boolean; -} + class ChannelDesign { + /** + * @see https://developer.knuddels.de/docs/classes/ChannelDesign.html#method_getDefaultFontSize + * @since AppServer 87470, ChatServer 87470 + */ + getDefaultFontSize(): number; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelDesign.html#method_getDefaultFontColor + * @since AppServer 87470, ChatServer 87470 + */ + getDefaultFontColor(): Color; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelDesign.html#method_getBackgroundColor + * @since AppServer 87470, ChatServer 87470 + */ + getBackgroundColor(): Color; + } -/** - * Eine ChannelConfiguration erlaubt Zugriff auf verschiedene Details - * der Konfiguration des Channels, in dem die App läuft. - * - * Die Instanz für die ChannelConfiguration erhält man über das Channel-Objekt - * mit channel.getChannelConfiguration() - */ -declare class ChannelConfiguration { /** - * Liefert das ChannelRights-Objekt des Channels. + * @see https://developer.knuddels.de/docs/classes/ChannelInformation.html */ - getChannelRights(): ChannelRights; - /** - * Liefert das ChannelInformation-Objekt des Channels. - */ - getChannelInformation(): ChannelInformation; -} + class ChannelInformation { + /** + * @see https://developer.knuddels.de/docs/classes/ChannelInformation.html#method_getTopic + */ + getTopic(): string; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelInformation.html#method_setTopic + */ + setTopic( + topic: string, + showMessage: boolean + ): void; + } -/** - * Ermöglicht Zugriff auf Designeinstellungen des Channels. - * @since AppServer 87470, ChatServer 87470 - */ -declare class ChannelDesign { /** - * Liefert die eingestellte Standard-Schriftgröße des Channels. - * @since AppServer 87470, ChatServer 87470 + * @see https://developer.knuddels.de/docs/classes/ChannelJoinPermission.html */ - getDefaultFontSize(): number; - /** - * Liefert die eingestellte Standard-Schriftfarbe des Channels. - * @since AppServer 87470, ChatServer 87470 - */ - getDefaultFontColor(): Color; - /** - * Liefert die eingestellte Hintergrundfarbe des Channels. - * @since AppServer 87470, ChatServer 87470 - */ - getBackgroundColor(): Color; -} + class ChannelJoinPermission { + /** + * @see https://developer.knuddels.de/docs/classes/ChannelJoinPermission.html#method_accepted + */ + static accepted(): ChannelJoinPermission; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelJoinPermission.html#method_denied + */ + static denied( + denyReason: string + ): ChannelJoinPermission; + } -/** - * Ermöglicht Zugriff auf textuelle Channelinformationen und persistente Änderungen. - */ -declare class ChannelInformation { /** - * Liefert das eingestellte Thema des Channels. + * @see https://developer.knuddels.de/docs/classes/ChannelRestrictions.html */ - getTopic(): string; - /** - * Aktualisiert das Thema das Channels. - */ - setTopic(topic: string, showMessage: boolean): void; -} + class ChannelRestrictions { + /** + * @see https://developer.knuddels.de/docs/classes/ChannelRestrictions.html#method_getMutedUsers + */ + getMutedUsers(): User[]; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelRestrictions.html#method_getColorMutedUsers + */ + getColorMutedUsers(): User[]; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelRestrictions.html#method_getLockedUsers + */ + getLockedUsers(): User[]; + } -/** - * Eine Instanz der Klasse ChannelJoinPermission wird als Rückgabewert - * der Methode App.mayJoinChannel(user) benötigt. - * - * Hiermit wird bestimmt, ob der anfragende Nutzer den Channel betreten darf. - * - * Erlauben mit ChannelJoinPermission.accepted() - * Verbieten mit ChannelJoinPermission.denied(denyReason) - */ -declare class ChannelJoinPermission { /** - * Erzeugt ein ChannelJoinPermission-Objekt, das den Zugriff in den Channel erlaubt. + * @see https://developer.knuddels.de/docs/classes/ChannelRights.html */ - static accepted(): ChannelJoinPermission; - /** - * Erzeugt ein ChannelJoinPermission-Objekt, das den Zugriff in den Channel verbietet. - */ - static denied(denyReason: string): ChannelJoinPermission; -} + class ChannelRights { + /** + * @see https://developer.knuddels.de/docs/classes/ChannelRights.html#method_getChannelOwners + */ + getChannelOwners(): User[]; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelRights.html#method_getChannelModerators + */ + getChannelModerators(): User[]; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelRights.html#method_getEventModerators + */ + getEventModerators(): User[]; + } -/** - * Eine Instanz von ChannelRestrictions ermöglicht es, aktuelle Informationen über Nutzungsbeschränkungen im Channel zu erhalten. - * - * Die Instanz für die ChannelRestrictions erhält man über das Channel-Objekt - * mit channel.getChannelRestrictions() - */ -declare class ChannelRestrictions { /** - * Liefert alle User die im Channel derzeit für das Schreiben öffentlicher Nachrichten gesperrt sind. + * @see https://developer.knuddels.de/docs/classes/ChannelTalkMode.html */ - getMutedUsers(): User[]; - /** - * Liefert alle User die im Channel derzeit für das Nutzen - * von Farben, Textformatierung und Smileys in öffentlichen Nachrichten gesperrt sind. - */ - getColorMutedUsers(): User[]; - /** - * Liefert alle User die für das Betreten des Channel derzeit gesperrt sind. - */ - getLockedUsers(): User[]; -} + class ChannelTalkMode { + /** + * @see https://developer.knuddels.de/docs/classes/ChannelTalkMode.html#property_Everyone + */ + static readonly Everyone: ChannelTalkMode; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelTalkMode.html#property_OnlyWithTalkPermission + */ + static readonly OnlyWithTalkPermission: ChannelTalkMode; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelTalkMode.html#property_FilteredByModerators + */ + static readonly FilteredByModerators: ChannelTalkMode; + } -/** - * Die Instanz für die ChannelRights erhält man über das ChannelConfiguration-Objekt - * mit channelConfiguration.getChannelRights() - */ -declare class ChannelRights { /** - * Liefert die Liste aller Channelbesitzer. In öffentlichen Channels sind dies alle hauptzuständigen betreuenden Mitglieder. (HZA/HZE) + * @see https://developer.knuddels.de/docs/classes/ChannelTalkPermission.html */ - getChannelOwners(): User[]; - /** - * Liefert die Liste aller Channel-Moderatoren. - */ - getChannelModerators(): User[]; - /** - * Liefert die Liste aller Event-Moderatoren. - */ - getEventModerators(): User[]; -} + class ChannelTalkPermission { + /** + * @see https://developer.knuddels.de/docs/classes/ChannelTalkPermission.html#property_NotInChannel + */ + static readonly NotInChannel: ChannelTalkPermission; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelTalkPermission.html#property_Default + */ + static readonly Default: ChannelTalkPermission; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelTalkPermission.html#property_TalkOnce + */ + static readonly TalkOnce: ChannelTalkPermission; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelTalkPermission.html#property_TalkPermanent + */ + static readonly TalkPermanent: ChannelTalkPermission; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelTalkPermission.html#property_VIP + */ + static readonly VIP: ChannelTalkPermission; + /** + * @see https://developer.knuddels.de/docs/classes/ChannelTalkPermission.html#property_Moderator + */ + static readonly Moderator: ChannelTalkPermission; + } -/** - * ChannelTalkMode repräsentiert das den Gesprächsmodus im Channel. - * - * Die Instanz für die ChannelTalkMode erhält man über das Channel-Objekt - * mit channel.getTalkMode() - */ -declare class ChannelTalkMode { /** - * Jeder darf gerade im Channel schreiben. + * @see https://developer.knuddels.de/docs/classes/ChatServerInfo.html */ - static readonly Everyone: ChannelTalkMode; - /** - * Nur Personen, die besondere Rederechte haben dürfen gerade im Channel schreiben. - */ - static readonly OnlyWithTalkPermission: ChannelTalkMode; - /** - * Nur Personen, die besondere Rederechte haben dürfen gerade im Channel schreiben. - * Die Nachrichten aller anderen Nutzer werden gefiltert und ggf. von den Moderatoren zugelassen. - */ - static readonly FilteredByModerators: ChannelTalkMode; -} + class ChatServerInfo extends ServerInfo { + /** + * @see https://developer.knuddels.de/docs/classes/ChatServerInfo.html#method_isTestSystem + */ + isTestSystem(): boolean; + } -/** - * ChannelTalkPermission repräsentiert das Rederecht eines User - * im Channel. - */ -declare class ChannelTalkPermission { /** - * Der User ist gerade nicht im Channel, - * daher ist die ChannelTalkPermission nicht bekannnt. + * @see https://developer.knuddels.de/docs/classes/Client.html */ - static readonly NotInChannel: ChannelTalkPermission; - /** - * Der User hat keine speziellen Rederechte. - * Beim ChannelTalkMode Default können diese User - * Nachrichten verfassen: - */ - static readonly Default: ChannelTalkPermission; - /** - * Der User kann eine öffentliche Nachricht verfassen. Danach wechselt die - * ChannelTalkPermission automatisch auf Default. - */ - static readonly TalkOnce: ChannelTalkPermission; - /** - * Der User kann permanent öffentliche Nachrichten verfassen. - */ - static readonly TalkPermanent: ChannelTalkPermission; - /** - * Der User ist VIP und kann öffentliche Nachrichten verfassen, - * die farbig und groß dargestellt werden. - */ - static readonly VIP: ChannelTalkPermission; - /** - * Der User ist VIP und kann öffentliche Nachrichten verfassen, - * die farbig und groß dargestellt werden. Moderatoren haben zudem weitere Möglichkeiten, die in der - * Anleitung zum Moderationssystem - * nachgelesen werden können. - */ - static readonly Moderator: ChannelTalkPermission; -} + class Client { + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_close + */ + static close(): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_sendEvent + */ + static sendEvent( + type: string, + data: KnuddelsEvent + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_executeSlashCommand + */ + static executeSlashCommand( + command: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_includeJS + */ + static includeJS( + ...files: string[] + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_addEventListener + */ + static addEventListener( + type: string, + callback: (event: {type: string, data: KnuddelsEvent}) => void + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_dispatchEvent + */ + static dispatchEvent( + event: Client.Event + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_removeEventListener + */ + static removeEventListener( + type: string, + callback?: (event: {type: string, data: KnuddelsEvent}) => void + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_includeCSS + */ + static includeCSS( + ...files: string[] + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_playSound + */ + static playSound( + fileName: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_prefetchSound + */ + static prefetchSound( + fileName: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_freeSound + */ + static freeSound( + fileName: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_getHostFrame + */ + static getHostFrame(): Client.HostFrame; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_getNick + */ + static getNick(): string; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_getClientType + */ + static getClientType(): ClientType; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_getCacheInvalidationId + */ + static getCacheInvalidationId(): string; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_getDirectConnection + */ + static getDirectConnection(): Promise; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_addConnectionTypeChangeListener + */ + static addConnectionTypeChangeListener( + callback: (type: string) => void + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#method_removeConnectionTypeChangeListener + */ + static removeConnectionTypeChangeListener( + callback: (type: string) => void + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.html#property_pageData + */ + static pageData: Json; + } -/** - * Liefert Informationen über einen ChatServer. - * - * Die Instanz von ChatServerInfo erhält man über den KnuddelsServer - * mit KnuddelsServer.getChatServerInfo() - */ -declare class ChatServerInfo extends ServerInfo { /** - * Liefert die Information, ob dieser Chat-Server ein Test-System ist. + * @see https://developer.knuddels.de/docs/classes/Client.Color.html */ - isTestSystem(): boolean; -} + namespace Client { + class Color { + /** + * @see https://developer.knuddels.de/docs/classes/Client.Color.html#method_fromRGB + */ + static fromRGB( + red: number, + green: number, + blue: number + ): Color; + /** + * @see https://developer.knuddels.de/docs/classes/Client.Color.html#method_fromHexString + */ + static fromHexString( + colorString: string + ): Color; + /** + * @see https://developer.knuddels.de/docs/classes/Client.Color.html#method_getRed + */ + getRed(): number; + /** + * @see https://developer.knuddels.de/docs/classes/Client.Color.html#method_getGreen + */ + getGreen(): number; + /** + * @see https://developer.knuddels.de/docs/classes/Client.Color.html#method_getBlue + */ + getBlue(): number; + /** + * @see https://developer.knuddels.de/docs/classes/Client.Color.html#method_asHexString + */ + asHexString(): string; + } + } -/** - * Klasse, die es ermöglicht den Client innerhalb des HTML User Interface zu steuern und Daten an den Server zu senden. - */ -declare class Client { /** - * Schließt das HTML User Interface. + * @see https://developer.knuddels.de/docs/classes/Client.Event.html */ - static close(): void; - /** - * Sendet ein Event zum Server, das mit dem AppHook onEventReceived in der App - * abgefangen werden kann. - */ - static sendEvent(type: string, data: KnuddelsEvent): void; - /** - * Sagt dem Chatserver, dass dieser Befehl für den Nutzer, der das HTML User Interface sieht, ausgeführt werden soll. - * Ist der Befehl auf einer Whitelist vom Server, so wird er sofort ausgeführt. Im anderen Falle sieht der Nutzer einen - * Link zum Bestätigen, mit dem er die Aktion starten kann. - * - * Derzeit sind diese Befehle auf der Whitelist: w, info, wc, top, h, dice, d, diceo, w2, serverpp, knuddelaccount, - * /tf-insert, /tf-inserts, /tf-insertb, /tf-insertsb, /tf-override, /tf-overrides, /tf-overrideb, /tf-overridesb, /autotype - */ - static executeSlashCommand(command: string): void; - /** - * Bindet eine Javascript-Datei ein und sorgt dafür, dass immer die aktuellste Version vom Server geladen wird. - */ - static includeJS(...files: string[]): void; - /** - * Registriert sich für ein bestimmtes Event, das vom Server mittels User/sendEvent:method oder vom Client via Client/dispatchEvent:method verschickt wurde. - */ - static addEventListener(type: string, callback: (event: {type: string, data: KnuddelsEvent}) => void): void; - /** - * Sendet ein bestimmtes Event, so dass alle mit Client/addEventListener:method registrierten Listener aufgerufen werden. - */ - static dispatchEvent(event: Client.Event): void; - /** - * Entfernt alle Event-Listener für einen bestimmten Event-Typ. - */ - static removeEventListener(type: string): void; - /** - * Bindet eine CSS-Datei ein und sorgt dafür, dass immer die aktuellste Version vom Server geladen wird. - */ - static includeCSS(...files: string[]): void; - /** - * Spielt einen Sound ab. Der angegebene Dateiname kann hierbei entweder absolut oder relativ zur angezeigten HTML-Datei sein. - * Bisher können nur Dateien mit Wave-Format zuverlässig abgespielt werden. - */ - static playSound(fileName: string): void; - /** - * Lädt einen Sound herunter, damit die Datei später ohne Wartezeit abgespielt werden kann. - * (Android only) - * Der angegebene Dateiname kann hierbei entweder absolut oder relativ zur angezeigten HTML-Datei sein. - */ - static prefetchSound(fileName: string): void; - /** - * Gibt einen Sound wieder frei, der in nächster Zeit vom Client nicht mehr gebraucht wird. - * (Android only) - * Der angegebene Dateiname kann hierbei entweder absolut oder relativ zur angezeigten HTML-Datei sein. - */ - static freeSound(fileName: string): void; - /** - * Liefert den HostFrame des aktuellen Inhalts. - */ - static getHostFrame(): Client.HostFrame; - /** - * Liefert den Nicknamen des Users, der gerade dieses HTML User Interface angezeigt bekommt. - */ - static getNick(): string; - /** - * Liefert den aktuellen ClientType des Nutzers, der gerade dieses HTML User Interface angezeigt bekommt. - */ - static getClientType(): ClientType; - /** - * Liefert die Id, die beim Laden von Skripten und Stylesheets an die URL angehängt wird, um sicherzustellen, dass eine neue Version - * der Datei vom Server geholt wird, statt die Datei aus dem Cache zu laden. - * - * Diese Id kann beim Einbinden eigener Ressourcen zum selben Zweck genutzt werden. - */ - static getCacheInvalidationId(): string; - /** - * Beinhaltet die JSON-Daten, die beim Erstellen des HTMLFile übergeben wurden. - */ - static pageData: Json; -} + namespace Client { + class Event { + /** + * @see https://developer.knuddels.de/docs/classes/Client.Event.html#method_Event + */ + constructor( + type: string, + data: KnuddelsEvent + ); + } + } -/** - * Klasse, mit der clientseitige Farbobjekte erstellt werden können. - */ -declare namespace Client { + /** + * @see https://developer.knuddels.de/docs/classes/Client.HostFrame.html + */ + namespace Client { + class HostFrame { + /** + * @see https://developer.knuddels.de/docs/classes/Client.HostFrame.html#method_setTitle + */ + setTitle( + newTitle: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.HostFrame.html#method_setBackgroundColor + */ + setBackgroundColor( + newColor: Color, + durationMillis?: number + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.HostFrame.html#method_setIcons + * @since Applet: 9.0bwj, AppServer: 84904 + */ + setIcons( + ...path: string[] + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.HostFrame.html#method_setResizable + */ + setResizable( + resizable: boolean + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.HostFrame.html#method_focus + * @since Applet: 9.0bwj, AppServer: 84904 + */ + focus(): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.HostFrame.html#method_setSize + * @since Applet: 9.0bwj, AppServer: 84516 + */ + setSize( + width: number, + height: number + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.HostFrame.html#method_getAppViewMode + * @since Applet: 9.0byl + */ + getAppViewMode(): void; + /** + * @see https://developer.knuddels.de/docs/classes/Client.HostFrame.html#method_getBrowserType + * @since Applet: 9.0bzp + */ + getBrowserType(): void; + } + } + + /** + * @see https://developer.knuddels.de/docs/classes/ClientType.html + */ + class ClientType { + /** + * @see https://developer.knuddels.de/docs/classes/ClientType.html#property_Applet + */ + static readonly Applet: ClientType; + /** + * @see https://developer.knuddels.de/docs/classes/ClientType.html#property_Browser + */ + static readonly Browser: ClientType; + /** + * @see https://developer.knuddels.de/docs/classes/ClientType.html#property_Android + */ + static readonly Android: ClientType; + /** + * @see https://developer.knuddels.de/docs/classes/ClientType.html#property_IOS + */ + static readonly IOS: ClientType; + /** + * @see https://developer.knuddels.de/docs/classes/ClientType.html#property_Offline + */ + static readonly Offline: ClientType; + } + + /** + * @see https://developer.knuddels.de/docs/classes/Color.html + */ class Color { /** - * Erzeugt ein Color-Objekt mit RGB-Werten. + * @see https://developer.knuddels.de/docs/classes/Color.html#method_fromRGB */ - static fromRGB(red: number, green: number, blue: number): Color; + static fromRGB( + red: number, + green: number, + blue: number + ): Color; /** - * Erzeugt ein Color-Objekt aus einem HexString. + * @see https://developer.knuddels.de/docs/classes/Color.html#method_fromRGBA */ - static fromHexString(colorString: string): Color; + static fromRGBA( + red: number, + green: number, + blue: number, + alpha: number + ): Color; /** - * Liefert den Rot-Anteil der Farbe als Zahl zwischen 0 und 255. + * @see https://developer.knuddels.de/docs/classes/Color.html#method_getAlpha */ - getRed(): number; + getAlpha(): number; /** - * Liefert den Grün-Anteil der Farbe als Zahl zwischen 0 und 255. - */ - getGreen(): number; - /** - * Liefert den Blau-Anteil der Farbe als Zahl zwischen 0 und 255. + * @see https://developer.knuddels.de/docs/classes/Color.html#method_getBlue */ getBlue(): number; /** - * Liefert die Farbe als in CSS nutzbaren HexString. + * @see https://developer.knuddels.de/docs/classes/Color.html#method_getGreen */ - asHexString(): string; + getGreen(): number; + /** + * @see https://developer.knuddels.de/docs/classes/Color.html#method_getRed + */ + getRed(): number; + /** + * @see https://developer.knuddels.de/docs/classes/Color.html#method_toKCode + */ + toKCode(): string; + /** + * @see https://developer.knuddels.de/docs/classes/Color.html#method_asNumber + */ + asNumber(): number; + /** + * @see https://developer.knuddels.de/docs/classes/Color.html#method_fromNumber + */ + static fromNumber( + value: number + ): Color; + } + + /** + * @see https://developer.knuddels.de/docs/classes/Dice.html + */ + class Dice { + /** + * @see https://developer.knuddels.de/docs/classes/Dice.html#method_Dice + */ + constructor( + count: number /* optional */, + value: number + ); + /** + * @see https://developer.knuddels.de/docs/classes/Dice.html#method_getAmount + */ + getAmount(): number; + /** + * @see https://developer.knuddels.de/docs/classes/Dice.html#method_getNumberOfSides + */ + getNumberOfSides(): number; + } + + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfiguration.html + */ + class DiceConfiguration { + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfiguration.html#method_isUsingOpenThrow + */ + isUsingOpenThrow(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfiguration.html#method_isUsingPrivateThrow + */ + isUsingPrivateThrow(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfiguration.html#method_getDices + */ + getDices(): Dice[]; + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfiguration.html#method_equals + */ + equals( + diceConfiguration: DiceConfiguration + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfiguration.html#method_getChatCommand + * @since AppServer 82248 + */ + getChatCommand(): string; + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfiguration.html#method_toString + * @since AppServer 108781 + */ + toString(): string; + } + + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfigurationFactory.html + */ + class DiceConfigurationFactory { + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfigurationFactory.html#method_addDice + */ + addDice( + dice: Dice + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfigurationFactory.html#method_computeCurrentDiceCount + */ + computeCurrentDiceCount(): number; + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfigurationFactory.html#method_setUseOpenThrow + */ + setUseOpenThrow( + shouldUseOpenThrow: boolean + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfigurationFactory.html#method_setShouldUsePrivateThrow + */ + setShouldUsePrivateThrow( + shouldUsePrivateThrow: boolean + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfigurationFactory.html#method_getDiceConfiguration + */ + getDiceConfiguration(): DiceConfiguration; + /** + * @see https://developer.knuddels.de/docs/classes/DiceConfigurationFactory.html#method_fromString + */ + static fromString( + diceConfigurationString: string + ): DiceConfiguration; + } + + /** + * @see https://developer.knuddels.de/docs/classes/DiceEvent.html + */ + class DiceEvent { + /** + * @see https://developer.knuddels.de/docs/classes/DiceEvent.html#method_getUser + */ + getUser(): User; + /** + * @see https://developer.knuddels.de/docs/classes/DiceEvent.html#method_getDiceResult + */ + getDiceResult(): DiceResult; + } + + /** + * @see https://developer.knuddels.de/docs/classes/DiceResult.html + */ + class DiceResult { + /** + * @see https://developer.knuddels.de/docs/classes/DiceResult.html#method_getDiceConfiguration + */ + getDiceConfiguration(): DiceConfiguration; + /** + * @see https://developer.knuddels.de/docs/classes/DiceResult.html#method_getSingleDiceResults + */ + getSingleDiceResults(): SingleDiceResult[]; + /** + * @see https://developer.knuddels.de/docs/classes/DiceResult.html#method_totalSum + */ + totalSum(): number; + /** + * @see https://developer.knuddels.de/docs/classes/DiceResult.html#method_toString + * @since AppServer 108781 + */ + toString(): string; + } + + /** + * @see https://developer.knuddels.de/docs/classes/Domain.html + */ + class Domain { + /** + * @see https://developer.knuddels.de/docs/classes/Domain.html#method_getDomainName + */ + getDomainName(): string; + } + + /** + * @see https://developer.knuddels.de/docs/classes/ExternalServerAccess.html + */ + class ExternalServerAccess { + /** + * @see https://developer.knuddels.de/docs/classes/ExternalServerAccess.html#method_getAllAccessibleDomains + */ + getAllAccessibleDomains(): Domain[]; + /** + * @see https://developer.knuddels.de/docs/classes/ExternalServerAccess.html#method_canAccessURL + */ + canAccessURL( + urlString: string + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/ExternalServerAccess.html#method_getURL + */ + getURL( + urlString: string, + parameters?: { + onSuccess?: (responseData: string, externalServerResponse: ExternalServerResponse) => void; + onFailure?: (responseData: string, externalServerResponse: ExternalServerResponse) => void; + } + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/ExternalServerAccess.html#method_postURL + */ + postURL( + urlString: string, + parameters?: { + onSuccess?: (responseData: string, externalServerResponse: ExternalServerResponse) => void; + onFailure?: (responseData: string, externalServerResponse: ExternalServerResponse) => void; + data?: Json; + } + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/ExternalServerAccess.html#method_touchURL + */ + touchURL( + urlString: string, + parameters?: { + onSuccess?: (responseData: string, externalServerResponse: ExternalServerResponse) => void; + onFailure?: (responseData: string, externalServerResponse: ExternalServerResponse) => void; + } + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/ExternalServerAccess.html#method_callURL + */ + callURL( + urlString: string, + parameters?: { + onSuccess?: (responseData: string, externalServerResponse: ExternalServerResponse) => void; + onFailure?: (responseData: string, externalServerResponse: ExternalServerResponse) => void; + method?: ("GET" | "POST"); + data?: Json; + } + ): void; + } + + /** + * @see https://developer.knuddels.de/docs/classes/ExternalServerResponse.html + */ + class ExternalServerResponse { + /** + * @see https://developer.knuddels.de/docs/classes/ExternalServerResponse.html#method_getURLString + */ + getURLString(): string; + /** + * @see https://developer.knuddels.de/docs/classes/ExternalServerResponse.html#method_getResponseCode + */ + getResponseCode(): number; + /** + * @see https://developer.knuddels.de/docs/classes/ExternalServerResponse.html#method_getHeaderFieldNames + * @since AppServer 108668 + */ + getHeaderFieldNames(): string[]; + /** + * @see https://developer.knuddels.de/docs/classes/ExternalServerResponse.html#method_getHeaderFields + */ + getHeaderFields(): { [key: string]: string[] }; + /** + * @see https://developer.knuddels.de/docs/classes/ExternalServerResponse.html#method_getHeaderFieldValues + * @since AppServer 108668 + */ + getHeaderFieldValues( + headerFieldName: string + ): string[]; + } + + /** + * @see https://developer.knuddels.de/docs/classes/Gender.html + */ + class Gender { + /** + * @see https://developer.knuddels.de/docs/classes/Gender.html#property_Male + */ + static readonly Male: Gender; + /** + * @see https://developer.knuddels.de/docs/classes/Gender.html#property_Female + */ + static readonly Female: Gender; + /** + * @see https://developer.knuddels.de/docs/classes/Gender.html#property_Unknown + */ + static readonly Unknown: Gender; + } + + /** + * @see https://developer.knuddels.de/docs/classes/HTMLFile.html + */ + class HTMLFile { + /** + * @see https://developer.knuddels.de/docs/classes/HTMLFile.html#method_HTMLFile + */ + constructor( + assetPath: string, + pageData?: Json + ); + /** + * @see https://developer.knuddels.de/docs/classes/HTMLFile.html#method_getAssetPath + */ + getAssetPath(): string; + /** + * @see https://developer.knuddels.de/docs/classes/HTMLFile.html#method_getPageData + */ + getPageData(): Json; + } + + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAccount.html + */ + class KnuddelAccount { + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAccount.html#method_getKnuddelAmount + */ + getKnuddelAmount(): KnuddelAmount; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAccount.html#method_getKnuddelAmountUsed + */ + getKnuddelAmountUsed(): KnuddelAmount; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAccount.html#method_getKnuddelAmountUnused + */ + getKnuddelAmountUnused(): KnuddelAmount; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAccount.html#method_getTotalKnuddelAmountAppToUser + */ + getTotalKnuddelAmountAppToUser(): KnuddelAmount; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAccount.html#method_getTotalKnuddelAmountUserToApp + */ + getTotalKnuddelAmountUserToApp(): KnuddelAmount; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAccount.html#method_hasEnough + */ + hasEnough( + knuddelAmount: KnuddelAmount + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAccount.html#method_getUser + */ + getUser(): User; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAccount.html#method_use + */ + use( + knuddelAmount: KnuddelAmount, + displayReasonText: string, + parameters?: { + transferReason?: string; + onError?: (message: string) => void; + onSuccess?: () => void; + } + ): void; + } + + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAmount.html + */ + class KnuddelAmount { + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAmount.html#method_KnuddelAmount + */ + constructor( + knuddel: number + ); + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAmount.html#method_fromCents + */ + static fromCents( + knuddel: number + ): KnuddelAmount; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAmount.html#method_fromKnuddel + */ + static fromKnuddel( + knuddel: number + ): KnuddelAmount; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAmount.html#method_getKnuddelCents + */ + getKnuddelCents(): number; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAmount.html#method_asNumber + */ + asNumber(): number; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAmount.html#method_negate + */ + negate(): KnuddelAmount; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelAmount.html#method_isNegative + */ + isNegative(): boolean; + } + + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html + */ + class KnuddelPot { + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html#method_getId + */ + getId(): number; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html#method_getState + */ + getState(): KnuddelPotState; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html#method_getKnuddelAmountPerParticipant + */ + getKnuddelAmountPerParticipant(): KnuddelAmount; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html#method_getKnuddelAmountTotal + */ + getKnuddelAmountTotal(): KnuddelAmount; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html#method_getParticipants + */ + getParticipants(): User[]; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html#method_getMaxFeeMultiplier + */ + getMaxFeeMultiplier(): number; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html#method_setFee + */ + setFee( + feeUser: BotUser, + feeMultiplier: number + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html#method_getFeeUser + */ + getFeeUser(): User; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html#method_getFeeMultiplier + */ + getFeeMultiplier(): number; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html#method_seal + */ + seal(): void; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html#method_refund + */ + refund( + reason?: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html#method_addWinner + */ + addWinner( + user: User, + weight?: number + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPot.html#method_payout + */ + payout( + text?: string + ): void; + } + + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPotState.html + */ + class KnuddelPotState { + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPotState.html#property_Open + */ + static readonly Open: KnuddelPotState; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPotState.html#property_Sealed + */ + static readonly Sealed: KnuddelPotState; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelPotState.html#property_Closed + */ + static readonly Closed: KnuddelPotState; + } + + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransfer.html + */ + class KnuddelTransfer { + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransfer.html#method_getSender + */ + getSender(): User; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransfer.html#method_getReceiver + */ + getReceiver(): BotUser; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransfer.html#method_getKnuddelAmount + */ + getKnuddelAmount(): KnuddelAmount; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransfer.html#method_getTransferReason + */ + getTransferReason(): string; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransfer.html#method_reject + */ + reject( + reason: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransfer.html#method_accept + */ + accept(): void; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransfer.html#method_canAddToPot + */ + canAddToPot( + pot: KnuddelPot + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransfer.html#method_addToPot + */ + addToPot( + knuddelPot: KnuddelPot + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransfer.html#method_isProcessed + */ + isProcessed(): boolean; + } + + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransferDisplayType.html + */ + class KnuddelTransferDisplayType { + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransferDisplayType.html#property_Public + */ + static readonly Public: KnuddelTransferDisplayType; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransferDisplayType.html#property_Private + */ + static readonly Private: KnuddelTransferDisplayType; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelTransferDisplayType.html#property_Post + */ + static readonly Post: KnuddelTransferDisplayType; + } + + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html + */ + class KnuddelsServer { + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getDefaultBotUser + */ + static getDefaultBotUser(): BotUser; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getPersistence + */ + static getPersistence(): AppPersistence; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getChannel + */ + static getChannel(): Channel; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getUserAccess + */ + static getUserAccess(): UserAccess; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getPaymentAccess + * @since AppServer 108571, ChatServer 108571 + */ + static getPaymentAccess(): PaymentAccess; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getExternalServerAccess + */ + static getExternalServerAccess(): ExternalServerAccess; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_refreshHooks + */ + static refreshHooks(): void; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getDefaultLogger + */ + static getDefaultLogger(): Logger; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getFullImagePath + */ + static getFullImagePath( + imageName: string + ): string; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getFullSystemImagePath + */ + static getFullSystemImagePath( + imageName: string + ): string; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getChatServerInfo + */ + static getChatServerInfo(): ChatServerInfo; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getAppServerInfo + */ + static getAppServerInfo(): AppServerInfo; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getAppAccess + */ + static getAppAccess(): AppAccess; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_createKnuddelPot + */ + static createKnuddelPot( + knuddelAmount: KnuddelAmount, + params?: { + payoutTimeoutMinutes?: number; + shouldSealPot?: (pot: KnuddelPot) => boolean; + onPotSealed?: (pot: KnuddelPot) => void; + } + ): KnuddelPot; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getKnuddelPot + */ + static getKnuddelPot( + id: number + ): (KnuddelPot|null); + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getAllKnuddelPots + */ + static getAllKnuddelPots(): KnuddelPot[]; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getToplistAccess + */ + static getToplistAccess(): ToplistAccess; + /** + * @see https://developer.knuddels.de/docs/classes/KnuddelsServer.html#method_getAppProfileEntryAccess + */ + static getAppProfileEntryAccess(): AppProfileEntryAccess; + } + + /** + * @see https://developer.knuddels.de/docs/classes/LoadConfiguration.html + */ + class LoadConfiguration { + /** + * @see https://developer.knuddels.de/docs/classes/LoadConfiguration.html#method_setBackgroundColor + */ + setBackgroundColor( + color: Color + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/LoadConfiguration.html#method_setBackgroundImage + */ + setBackgroundImage( + imageUrl: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/LoadConfiguration.html#method_setText + */ + setText( + text: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/LoadConfiguration.html#method_setLoadingIndicatorImage + */ + setLoadingIndicatorImage( + imageUrl: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/LoadConfiguration.html#method_setForegroundColor + */ + setForegroundColor( + color: Color + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/LoadConfiguration.html#method_setEnabled + */ + setEnabled( + enabled: boolean + ): void; + } + + /** + * @see https://developer.knuddels.de/docs/classes/Logger.html + */ + class Logger { + /** + * @see https://developer.knuddels.de/docs/classes/Logger.html#method_debug + */ + debug( + ...msg: any[] + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Logger.html#method_info + */ + info( + ...msg: any[] + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Logger.html#method_warn + */ + warn( + ...msg: any[] + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Logger.html#method_error + */ + error( + ...msg: any[] + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Logger.html#method_fatal + */ + fatal( + ...msg: any[] + ): void; + } + + /** + * @see https://developer.knuddels.de/docs/classes/Message.html + */ + class Message { + /** + * @see https://developer.knuddels.de/docs/classes/Message.html#method_getAuthor + */ + getAuthor(): User; + /** + * @see https://developer.knuddels.de/docs/classes/Message.html#method_getText + */ + getText(): string; + /** + * @see https://developer.knuddels.de/docs/classes/Message.html#method_getCreationDate + */ + getCreationDate(): Date; + } + + /** + * @see https://developer.knuddels.de/docs/classes/OwnAppInstance.html + */ + class OwnAppInstance { + /** + * @see https://developer.knuddels.de/docs/classes/OwnAppInstance.html#method_getOnlineUsers + * @since AppServer 82560 + */ + getOnlineUsers( + otherAppInstance: AppInstance, + ...userType: UserType[] + ): User[]; + } + + /** + * @see https://developer.knuddels.de/docs/classes/PaymentAccess.html + * @since AppServer 108571, ChatServer 108571 + */ + class PaymentAccess { + /** + * @see https://developer.knuddels.de/docs/classes/PaymentAccess.html#method_startKnuddelPurchase + * @since AppServer 108571, ChatServer 108571 + */ + startKnuddelPurchase( + user: User, + amount: KnuddelAmount, + parameters?: { + customMessage?: string; + transferReason?: string; + toAccount?: boolean; + } + ): void; + } + + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html + */ + class Persistence { + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html#method_hasString + */ + hasString( + key: string + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html#method_setString + */ + setString( + key: string, + value: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html#method_getString + */ + getString( + key: string, + defaultValue?: string + ): string; + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html#method_deleteString + */ + deleteString( + key: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html#method_hasNumber + */ + hasNumber( + key: string + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html#method_setNumber + */ + setNumber( + key: string, + value: number + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html#method_addNumber + */ + addNumber( + key: string, + value: number + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html#method_getNumber + */ + getNumber( + key: string, + defaultValue?: number + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html#method_deleteNumber + */ + deleteNumber( + key: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html#method_hasObject + */ + hasObject( + key: string + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html#method_setObject + */ + setObject( + key: string, + object: (KnuddelsJson | KnuddelsJsonArray | KnuddelsSerializable) + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html#method_getObject + */ + getObject( + key: string, + defaultValue?: (KnuddelsJson | KnuddelsJsonArray | KnuddelsSerializable) + ): (KnuddelsJson | KnuddelsJsonArray | KnuddelsSerializable); + /** + * @see https://developer.knuddels.de/docs/classes/Persistence.html#method_deleteObject + */ + deleteObject( + key: string + ): void; + } + + /** + * @see https://developer.knuddels.de/docs/classes/PrivateMessage.html + */ + class PrivateMessage extends Message { + /** + * @see https://developer.knuddels.de/docs/classes/PrivateMessage.html#method_getReceivingUsers + */ + getReceivingUsers(): User[]; + /** + * @see https://developer.knuddels.de/docs/classes/PrivateMessage.html#method_sendReply + */ + sendReply( + text: string + ): void; + } + + /** + * @see https://developer.knuddels.de/docs/classes/PublicActionMessage.html + */ + class PublicActionMessage extends Message { + } + + /** + * @see https://developer.knuddels.de/docs/classes/PublicEventMessage.html + */ + class PublicEventMessage extends Message { + } + + /** + * @see https://developer.knuddels.de/docs/classes/PublicMessage.html + */ + class PublicMessage extends Message { + } + + /** + * @see https://developer.knuddels.de/docs/classes/Quest.html + */ + class Quest { + /** + * @see https://developer.knuddels.de/docs/classes/Quest.html#method_setSolved + * @since AppServer 82290, ChatServer 82290 + */ + setSolved( + count?: number + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Quest.html#method_getQuestKey + * @since AppServer 82290, ChatServer 82290 + */ + getQuestKey(): string; + } + + /** + * @see https://developer.knuddels.de/docs/classes/QuestAccess.html + */ + class QuestAccess { + /** + * @see https://developer.knuddels.de/docs/classes/QuestAccess.html#method_getQuests + * @since AppServer 82290, ChatServer 82290 + */ + getQuests(): Quest[]; + /** + * @see https://developer.knuddels.de/docs/classes/QuestAccess.html#method_hasQuest + * @since AppServer 82290, ChatServer 82290 + */ + hasQuest( + questKey: string + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/QuestAccess.html#method_getQuest + * @since AppServer 82290, ChatServer 82290 + */ + getQuest( + questKey: string + ): (Quest|null); + /** + * @see https://developer.knuddels.de/docs/classes/QuestAccess.html#method_getUser + * @since AppServer 82290, ChatServer 82290 + */ + getUser(): User; + } + + /** + * @see https://developer.knuddels.de/docs/classes/RandomOperations.html + */ + class RandomOperations { + /** + * @see https://developer.knuddels.de/docs/classes/RandomOperations.html#method_nextInt + */ + static nextInt( + minValue: number /* optional */, + maxValue: number + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/RandomOperations.html#method_nextInts + */ + static nextInts( + minValue: number /* optional */, + maxValue: number, + count: number, + onlyDifferentNumbers: boolean + ): number[]; + /** + * @see https://developer.knuddels.de/docs/classes/RandomOperations.html#method_flipTrue + */ + static flipTrue( + truePropability: number + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/RandomOperations.html#method_getRandomObject + */ + static getRandomObject( + objects: T[] + ): T; + /** + * @see https://developer.knuddels.de/docs/classes/RandomOperations.html#method_shuffleObjects + */ + static shuffleObjects( + objects: T[] + ): T[]; + /** + * @see https://developer.knuddels.de/docs/classes/RandomOperations.html#method_getRandomString + * @since AppServer 92699 + */ + static getRandomString( + length: number, + allowedCharacters?: string + ): string; + } + + /** + * @see https://developer.knuddels.de/docs/classes/RootAppInstance.html + */ + class RootAppInstance extends AppInstance { + /** + * @see https://developer.knuddels.de/docs/classes/RootAppInstance.html#method_updateApp + */ + updateApp( + message: string /* optional */, + logMessage?: string + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/RootAppInstance.html#method_cancelUpdateApp + * @since AppServer 98117 + */ + cancelUpdateApp(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/RootAppInstance.html#method_stopApp + */ + stopApp( + message: string /* optional */, + logMessage?: string + ): void; + } + + /** + * @see https://developer.knuddels.de/docs/classes/ServerInfo.html + */ + class ServerInfo { + /** + * @see https://developer.knuddels.de/docs/classes/ServerInfo.html#method_getServerId + */ + getServerId(): string; + /** + * @see https://developer.knuddels.de/docs/classes/ServerInfo.html#method_getRevision + */ + getRevision(): number; + } + + /** + * @see https://developer.knuddels.de/docs/classes/SingleDiceResult.html + */ + class SingleDiceResult { + /** + * @see https://developer.knuddels.de/docs/classes/SingleDiceResult.html#method_getDice + */ + getDice(): Dice; + /** + * @see https://developer.knuddels.de/docs/classes/SingleDiceResult.html#method_valuesRolled + */ + valuesRolled(): number[]; + /** + * @see https://developer.knuddels.de/docs/classes/SingleDiceResult.html#method_sum + */ + sum(): number; + } + + /** + * @see https://developer.knuddels.de/docs/classes/String.html + */ + interface String { + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_escapeKCode + */ + escapeKCode(): string; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_stripKCode + */ + stripKCode(): string; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_startsWith + */ + startsWith( + prefix: string + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_endsWith + */ + endsWith( + suffix: string + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_getPixelWidth + */ + getPixelWidth( + fontSize: number, + isBold: boolean + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_limitString + */ + limitString( + fontSize: number, + isBold: boolean, + maxPixelWidth: number, + abbreviationMarker?: string + ): string; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_contains + */ + contains( + needle: string + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_minimalConversionCost + * @since AppServer 82271 + */ + minimalConversionCost( + otherString: string + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_hasOnlyNicknameCharacters + * @since AppServer 82271 + */ + hasOnlyNicknameCharacters(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_hasOnlyDigits + * @since AppServer 82271 + */ + hasOnlyDigits(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_hasOnlyAlphanumericalAndWhitespaceCharacters + * @since AppServer 82271 + */ + hasOnlyAlphanumericalAndWhitespaceCharacters(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_isEmpty + * @since AppServer 92695 + */ + isEmpty(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_toCamelCase + * @since AppServer 92695 + */ + toCamelCase(): string; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_capitalize + * @since AppServer 92695 + */ + capitalize(): string; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_replaceAll + */ + replaceAll( + search: string|RegExp, + replacement: string + ): string; + /** + * @see https://developer.knuddels.de/docs/classes/String.html#method_isOk + * @since ChatServer 82262, AppServer 82262 + */ + isOk(): boolean; + } + + /** + * @see https://developer.knuddels.de/docs/classes/Toplist.html + */ + class Toplist { + /** + * @see https://developer.knuddels.de/docs/classes/Toplist.html#method_getUserPersistenceNumberKey + */ + getUserPersistenceNumberKey(): string; + /** + * @see https://developer.knuddels.de/docs/classes/Toplist.html#method_getDisplayName + */ + getDisplayName(): string; + /** + * @see https://developer.knuddels.de/docs/classes/Toplist.html#method_getChatCommand + */ + getChatCommand( + user_or_userId?: (User|number) + ): string; + /** + * @see https://developer.knuddels.de/docs/classes/Toplist.html#method_getLabel + */ + getLabel( + user_or_userId: (User|number) + ): string; + /** + * @see https://developer.knuddels.de/docs/classes/Toplist.html#method_addLabelChangeListener + */ + addLabelChangeListener( + listener: (labelChangeEvent: ToplistLabelChangeEvent) => void + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Toplist.html#method_removeLabelChangeListener + */ + removeLabelChangeListener( + listener: (labelChangeEvent: ToplistLabelChangeEvent) => void + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Toplist.html#method_addRankChangeListener + */ + addRankChangeListener( + listener: (rankChangeEvent: ToplistRankChangeEvent) => void + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/Toplist.html#method_removeRankChangeListener + */ + removeRankChangeListener( + listener: (rankChangeEvent: ToplistRankChangeEvent) => void + ): void; + } + + /** + * @see https://developer.knuddels.de/docs/classes/ToplistAccess.html + */ + class ToplistAccess { + /** + * @see https://developer.knuddels.de/docs/classes/ToplistAccess.html#method_getAllToplists + */ + getAllToplists(): Toplist[]; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistAccess.html#method_getToplist + */ + getToplist( + userPersistenceNumberKey: string + ): Toplist; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistAccess.html#method_removeToplist + */ + removeToplist( + toplist: Toplist + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistAccess.html#method_createOrUpdateToplist + */ + createOrUpdateToplist( + userPersistenceNumberKey: string, + displayName: string, + parameters?: { + labelMapping?: { [minValue: string]: string }; + ascending?: boolean; + } + ): Toplist; + } + + /** + * @see https://developer.knuddels.de/docs/classes/ToplistDisplayType.html + */ + class ToplistDisplayType { + /** + * @see https://developer.knuddels.de/docs/classes/ToplistDisplayType.html#property_Label + */ + static readonly Label: ToplistDisplayType; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistDisplayType.html#property_Value + */ + static readonly Value: ToplistDisplayType; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistDisplayType.html#property_LabelAndRank + */ + static readonly LabelAndRank: ToplistDisplayType; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistDisplayType.html#property_ValueAndRank + */ + static readonly ValueAndRank: ToplistDisplayType; + } + + /** + * @see https://developer.knuddels.de/docs/classes/ToplistLabelChangeEvent.html + */ + class ToplistLabelChangeEvent { + /** + * @see https://developer.knuddels.de/docs/classes/ToplistLabelChangeEvent.html#method_getToplist + */ + getToplist(): Toplist; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistLabelChangeEvent.html#method_getOldLabel + */ + getOldLabel(): string; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistLabelChangeEvent.html#method_getNewLabel + */ + getNewLabel(): string; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistLabelChangeEvent.html#method_getUser + */ + getUser(): User; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistLabelChangeEvent.html#method_getOldValue + */ + getOldValue(): number; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistLabelChangeEvent.html#method_getNewValue + */ + getNewValue(): number; + } + + /** + * @see https://developer.knuddels.de/docs/classes/ToplistRankChangeEvent.html + */ + class ToplistRankChangeEvent { + /** + * @see https://developer.knuddels.de/docs/classes/ToplistRankChangeEvent.html#method_getToplist + */ + getToplist(): Toplist; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistRankChangeEvent.html#method_getOldRank + */ + getOldRank(): number; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistRankChangeEvent.html#method_getNewRank + */ + getNewRank(): number; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistRankChangeEvent.html#method_getUser + */ + getUser(): User; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistRankChangeEvent.html#method_getUsersOvertook + */ + getUsersOvertook(): User[]; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistRankChangeEvent.html#method_getOldValue + */ + getOldValue(): number; + /** + * @see https://developer.knuddels.de/docs/classes/ToplistRankChangeEvent.html#method_getNewValue + */ + getNewValue(): number; + } + + /** + * @see https://developer.knuddels.de/docs/classes/User.html + */ + class User { + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getUserId + */ + getUserId(): number; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getNick + */ + getNick(): string; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getAge + */ + getAge(): number; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getGender + */ + getGender(): Gender; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getRegDate + */ + getRegDate(): Date; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getUserStatus + */ + getUserStatus(): UserStatus; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getUserType + */ + getUserType(): UserType; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getClientType + */ + getClientType(): ClientType; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_canShowAppViewMode + */ + canShowAppViewMode( + mode: AppViewMode + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_canSendAppContent + */ + canSendAppContent( + appContent: AppContent + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isInTeam + */ + isInTeam( + teamName: string, + subTeamName?: string + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getPersistence + */ + getPersistence(): UserPersistence; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_sendPrivateMessage + */ + sendPrivateMessage( + message: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_sendPostMessage + */ + sendPostMessage( + topic: string, + text: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isChannelOwner + */ + isChannelOwner(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isLikingChannel + */ + isLikingChannel(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isChannelCoreUser + * @since AppServer 92701, ChatServer 92701 + */ + isChannelCoreUser(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isAppManager + */ + isAppManager(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isMuted + */ + isMuted(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isColorMuted + */ + isColorMuted(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isLocked + */ + isLocked(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isChannelModerator + */ + isChannelModerator(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isEventModerator + */ + isEventModerator(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isAppDeveloper + */ + isAppDeveloper(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getProfileLink + */ + getProfileLink( + displayText?: string + ): string; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isOnlineInChannel + */ + isOnlineInChannel(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getKnuddelAmount + */ + getKnuddelAmount(): KnuddelAmount; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isOnline + */ + isOnline(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getReadme + */ + getReadme(): string; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getOnlineMinutes + */ + getOnlineMinutes(): number; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isAway + */ + isAway(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_hasProfilePhoto + */ + hasProfilePhoto(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_sendAppContent + */ + sendAppContent( + appContent: AppContent + ): AppContentSession; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getAppContentSessions + */ + getAppContentSessions(): AppContentSession[]; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getAppContentSession + */ + getAppContentSession( + appViewMode: AppViewMode + ): AppContentSession; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_equals + */ + equals( + user: User + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getProfilePhoto + */ + getProfilePhoto( + width: number, + height: number + ): string; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getQuestAccess + * @since AppServer 82290, ChatServer 82290 + */ + getQuestAccess(): QuestAccess; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isStreamingVideo + */ + isStreamingVideo(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getKnuddelAccount + */ + getKnuddelAccount(): KnuddelAccount; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getChannelTalkPermission + */ + getChannelTalkPermission(): ChannelTalkPermission; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isProfilePhotoVerified + */ + isProfilePhotoVerified(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_isAgeVerified + */ + isAgeVerified(): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_addNicklistIcon + */ + addNicklistIcon( + imagePath: string, + imageWidth: number + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_removeNicklistIcon + */ + removeNicklistIcon( + imagePath: string + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_triggerDice + * @since AppServer 89159, ChatServer 89159 + */ + triggerDice( + diceConfiguration: DiceConfiguration + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/User.html#method_getAuthenticityClassification + * @since AppServer 94663, ChatServer 94663 + */ + getAuthenticityClassification(): AuthenticityClassification; + } + + /** + * @see https://developer.knuddels.de/docs/classes/UserAccess.html + */ + class UserAccess { + /** + * @see https://developer.knuddels.de/docs/classes/UserAccess.html#method_getUserId + */ + getUserId( + nick: string + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserAccess.html#method_exists + */ + exists( + nick: string + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/UserAccess.html#method_isUserDeleted + */ + isUserDeleted( + userId: number + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/UserAccess.html#method_mayAccess + */ + mayAccess( + userId: number + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/UserAccess.html#method_getUserById + */ + getUserById( + userId: number + ): User; + /** + * @see https://developer.knuddels.de/docs/classes/UserAccess.html#method_getNick + */ + getNick( + userId: number + ): string; + /** + * @see https://developer.knuddels.de/docs/classes/UserAccess.html#method_eachAccessibleUser + */ + eachAccessibleUser( + callback: (user: User, index: number, accessibleUserCount: number, key?: string) => boolean, + parameters?: { + onStart?: (accessibleUserCount: number, key?: string) => void; + onEnd?: (accessibleUserCount: number, key?: string) => void; + } + ): void; + } + + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistence.html + */ + class UserPersistence extends Persistence { + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistence.html#method_deleteAllNumbers + * @since AppServer 88569 + */ + deleteAllNumbers(): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistence.html#method_deleteAllObjects + * @since AppServer 88569 + */ + deleteAllObjects(): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistence.html#method_deleteAllStrings + * @since AppServer 88569 + */ + deleteAllStrings(): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistence.html#method_deleteAll + * @since AppServer 88569 + */ + deleteAll(): number; + } + + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumberEntry.html + */ + class UserPersistenceNumberEntry { + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumberEntry.html#method_getUser + */ + getUser(): User; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumberEntry.html#method_getValue + */ + getValue(): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumberEntry.html#method_getRank + */ + getRank(): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumberEntry.html#method_getPosition + */ + getPosition(): number; + } + + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumbers.html + */ + class UserPersistenceNumbers { + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumbers.html#method_getSum + */ + static getSum( + key: string + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumbers.html#method_deleteAll + */ + static deleteAll( + key: string + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumbers.html#method_getCount + */ + static getCount( + key: string, + parameters?: { + minimumValue?: number; + maximumValue?: number; + } + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumbers.html#method_updateKey + */ + static updateKey( + oldKeyName: string, + newKeyName: string + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumbers.html#method_updateValue + */ + static updateValue( + key: string, + oldValue: number, + newValue: number + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumbers.html#method_addNumber + */ + static addNumber( + key: string, + value: number, + parameters?: { + minimumValue?: number; + maximumValue?: number; + targetUsers?: User[]; + } + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumbers.html#method_getSortedEntries + */ + static getSortedEntries( + key: string, + parameters?: { + ascending?: boolean; + count?: number; + page?: number; + minimumValue?: number; + maximumValue?: number; + } + ): UserPersistenceNumberEntry[]; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumbers.html#method_getSortedEntriesAdjacent + */ + static getSortedEntriesAdjacent( + key: string, + user_or_userId: (User|number), + parameters?: { + ascending?: boolean; + count?: number; + } + ): UserPersistenceNumberEntry[]; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumbers.html#method_getPosition + */ + static getPosition( + key: string, + user_or_userId: (User|number), + parameters?: { + ascending?: boolean; + minimumValue?: number; + } + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumbers.html#method_getRank + */ + static getRank( + key: string, + user_or_userId: (User|number), + parameters?: { + ascending?: boolean; + minimumValue?: number; + } + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumbers.html#method_each + */ + static each( + key: string, + callback: (user: User, value: number, index: number, totalCount: number, key: string) => boolean, + parameters?: { + ascending?: boolean; + minimumValue?: number; + maximumValue?: number; + maximumCount?: number; + onStart?: (totalCount: number, key: string) => void; + onEnd?: (totalCount: number, key: string) => void; + } + ): void; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceNumbers.html#method_getAllKeys + * @since AppServer 82483 + */ + static getAllKeys( + filterKey?: string + ): string[]; + } + + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceObjects.html + */ + class UserPersistenceObjects { + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceObjects.html#method_deleteAll + * @since AppServer 82478 + */ + static deleteAll( + key: string + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceObjects.html#method_getAllKeys + * @since AppServer 82483 + */ + static getAllKeys( + filterKey?: string + ): string[]; + } + + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceStrings.html + */ + class UserPersistenceStrings { + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceStrings.html#method_exists + * @since AppServer 88571 + */ + static exists( + key: string, + value: string, + ignoreCase?: boolean + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceStrings.html#method_deleteAll + * @since AppServer 82478 + */ + static deleteAll( + key: string + ): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserPersistenceStrings.html#method_getAllKeys + * @since AppServer 82483 + */ + static getAllKeys( + filterKey?: string + ): string[]; + } + + /** + * @see https://developer.knuddels.de/docs/classes/UserStatus.html + */ + class UserStatus { + /** + * @see https://developer.knuddels.de/docs/classes/UserStatus.html#method_getNumericStatus + */ + getNumericStatus(): number; + /** + * @see https://developer.knuddels.de/docs/classes/UserStatus.html#method_isAtLeast + */ + isAtLeast( + otherUserStatus: UserStatus + ): boolean; + /** + * @see https://developer.knuddels.de/docs/classes/UserStatus.html#property_Newbie + */ + static readonly Newbie: UserStatus; + /** + * @see https://developer.knuddels.de/docs/classes/UserStatus.html#property_Family + */ + static readonly Family: UserStatus; + /** + * @see https://developer.knuddels.de/docs/classes/UserStatus.html#property_Stammi + */ + static readonly Stammi: UserStatus; + /** + * @see https://developer.knuddels.de/docs/classes/UserStatus.html#property_HonoryMember + */ + static readonly HonoryMember: UserStatus; + /** + * @see https://developer.knuddels.de/docs/classes/UserStatus.html#property_Admin + */ + static readonly Admin: UserStatus; + /** + * @see https://developer.knuddels.de/docs/classes/UserStatus.html#property_SystemBot + */ + static readonly SystemBot: UserStatus; + /** + * @see https://developer.knuddels.de/docs/classes/UserStatus.html#property_Sysadmin + */ + static readonly Sysadmin: UserStatus; + } + + /** + * @see https://developer.knuddels.de/docs/classes/UserType.html + */ + class UserType { + /** + * @see https://developer.knuddels.de/docs/classes/UserType.html#property_AppBot + */ + static readonly AppBot: UserType; + /** + * @see https://developer.knuddels.de/docs/classes/UserType.html#property_SystemBot + */ + static readonly SystemBot: UserType; + /** + * @see https://developer.knuddels.de/docs/classes/UserType.html#property_Human + */ + static readonly Human: UserType; + } + + /** + * @see https://developer.knuddels.de/docs/classes/VideoChannelData.html + */ + class VideoChannelData { + /** + * @see https://developer.knuddels.de/docs/classes/VideoChannelData.html#method_getStreamingVideoUsers + */ + getStreamingVideoUsers(): User[]; } } - -/** - * Klasse, die es ermöglicht ein Event via Client/dispatchEvent:method zu versenden. - */ -declare namespace Client { - class Event { - /** - * Erzeugt ein Event. - */ - constructor(type: string, data: KnuddelsEvent); - } -} - -/** - * Klasse, die es ermöglicht den Inhalte zu steuern, die im Bereich liegen, der das HTML User Interface hostet. - */ -declare namespace Client { - class HostFrame { - /** - * Setzt den Titel der Seite im gezoomten Modus (nur Android). - */ - setTitle(newTitle: string): void; - /** - * Ändert die sichtbare Hintergrundfarbe des Hostframes animiert. (Android-only) - */ - setBackgroundColor(newColor: Color, durationMillis?: number): void; - /** - * Setzt die Icons, die als Fenster-Icon angezeigt werden sollen. (Applet-only, nur mit AppViewMode.Popup) - * Die Bilder müssen von groß nach klein sortiert sein. Die größeren Bilder werden (je nach System) automatisch dann eingesetzt, - * wenn größere Bilder benötigt werden (z.B. in der Task-Leiste, oder beim Alt+Tab Fenster-Wechsel). - * @since Applet: 9.0bwj, AppServer: 84904 - */ - setIcons(...path: string[]): void; - /** - * Setzt, ob das Fenster resizable ist. (Applet-only, nur mit AppViewMode.Popup) - */ - setResizable(resizable: boolean): void; - /** - * Bringt das Fenster der App (App-Popup bzw. Chat-Fenster) in den Vordergrund. (Applet-only) - * @since Applet: 9.0bwj, AppServer: 84904 - */ - focus(): void; - /** - * Ändert die Größe des App-Fensters (AppViewMode.Popup) bzw. App-Overlays (AppViewMode.Overlay). - * @since Applet: 9.0bwj, AppServer: 84516 - */ - setSize(width: number, height: number): void; - } -} - -/** - * ClientType repräsentiert die Art der Chat-Verbindung des Users. - * - * Eine Instanz von ClientType erhält man über das User-Objekt - * mit user.getClientType() - */ -declare class ClientType { - /** - * Der User ist mit dem Java Applet im Chat. - */ - static readonly Applet: ClientType; - /** - * Der User ist mit dem Browser im Chat (Mini-Chat, HTML-Chat). - */ - static readonly Browser: ClientType; - /** - * Der User ist mit der Android-App im Chat. - */ - static readonly Android: ClientType; - /** - * Der User ist mit der iOS-App im Chat. - */ - static readonly IOS: ClientType; - /** - * Der User ist nicht im Chat. - */ - static readonly Offline: ClientType; -} - -/** - * Klasse, mit der serverseitige Farbobjekte erstellt werden können. - */ -declare class Color { - /** - * Erzeugt ein serverseitiges Color-Objekt mit RGB-Werten. - * Als Alpha-Wert wird automatisch 255 genutzt. - */ - static fromRGB(red: number, green: number, blue: number): Color; - /** - * Erzeugt ein serverseitiges Color-Objekt mit RGBA-Werten. - */ - static fromRGBA(red: number, green: number, blue: number, alpha: number): Color; - /** - * Liefert den Alpha-Wert der Farbe als Zahl zwischen 0 und 255. - */ - getAlpha(): number; - /** - * Liefert den Blau-Anteil der Farbe als Zahl zwischen 0 und 255. - */ - getBlue(): number; - /** - * Liefert den Grün-Anteil der Farbe als Zahl zwischen 0 und 255. - */ - getGreen(): number; - /** - * Liefert den Rot-Anteil der Farbe als Zahl zwischen 0 und 255. - */ - getRed(): number; - /** - * Liefert die Farbe als KCode zurück. - */ - toKCode(): string; - /** - * Liefert die numerische Repräsentation der Farbe zurück. - */ - asNumber(): number; - /** - * Erzeugt ein serverseitiges Color-Objekt aus der numerischen Repräsentation einer Farbe. - */ - static fromNumber(value: number): Color; -} - -/** - * Eine Instanz von Dice repräsentiert die Anzahl an Würfeln von einerm bestimmten Typ. - */ -declare class Dice { - /** - * Erzeugt ein Dice-Objekt mit der übergebenen Anzahl Würfel und Augenzahl. - */ - constructor(count: number /* optional */, value: number); - /** - * Liefert die Anzahl der Würfel. - */ - getAmount(): number; - /** - * Liefert die Anzahl der Seiten der Würfel. - */ - getNumberOfSides(): number; -} - -/** - * Eine Instanz von DiceConfiguration repräsentiert eindeutig eine Konfiguration zum würfeln. - * Wurde gewürfelt, so können die Konfigurationen verglichen werden, um zu prüfen, ob exakt die Würfel - * gewürfelt wurden, die gewürfelt werden sollten. - */ -declare class DiceConfiguration { - /** - * Informiert, ob es sich um einen offenen Würfelwurf handelt. - * Offene Würfelwürfe sind speziell. Falls die Augenzahl des Würfels die Maximalsumme zeigt, - * so wird noch einmal gewürfelt und die neue Zahl dazu addiert, solange bis der Würfel - * nicht mehr die Maximalsumme zeigt. - * - * Beispiel: /diceo 1w4 -> 4 -> 4 -> 3 = 11 - */ - isUsingOpenThrow(): boolean; - /** - * Informiert darüber, ob die Würfel privat geworfen worden sind. - * Würfelwürfe zählen als privat, wenn am Ende des Würfelbefehls ein Ausrufezeichen steht. - * Beispiel: /dice 10w2! - */ - isUsingPrivateThrow(): boolean; - /** - * Liefert ein Array mit Würfeln, mit denen gewürfelt wurde. - */ - getDices(): Dice[]; - /** - * Vergleicht, ob zwei Konfigurationen inhaltlich identisch sind - */ - equals(diceConfiguration: DiceConfiguration): boolean; - /** - * Liefert den Befehl, der im Chat eingegeben werden kann, um einen Wurf auszuführen, - * der zur DiceConfiguration passt. - * @since AppServer 82248 - */ - getChatCommand(): string; -} - -/** - * Eine Instanz einer DiceConfigurationFactory kann zur Unterstützung genutzt werden, um eine - * DiceConfiguration zu erzeugen. - */ -declare class DiceConfigurationFactory { - /** - * Fügt der Konfiguration einen Würfel hinzu. - */ - addDice(dice: Dice): void; - /** - * Liefert die Anzahl der Würfel, die zur Konfiguration gehören. - */ - computeCurrentDiceCount(): number; - /** - * Setzt die Information, ob ein offener Wurf oder ein normaler Wurf stattfinden soll. - * Offene Würfelwürfe sind speziell. Falls die Augenzahl des Würfels die Maximalsumme zeigt, - * so wird noch einmal gewürfelt und die neue Zahl dazu addiert, solange bis der Würfel - * nicht mehr die Maximalsumme zeigt. - * - * Beispiel: /diceo 1w4 -> 4 -> 4 -> 3 = 11 - */ - setUseOpenThrow(shouldUseOpenThrow: boolean): void; - /** - * Setzt die Information, ob der Würfelwurf privat stattfinden soll. - */ - setShouldUsePrivateThrow(shouldUsePrivateThrow: boolean): void; - /** - * Liefert die erzeugte Würfelkonfiguration. - */ - getDiceConfiguration(): DiceConfiguration; - /** - * Erzeugt eine Würfelkonfiguration. - */ - static fromString(diceConfigurationString: string): DiceConfiguration; -} - -/** - * Wird in der App die Methode onUserDiced überschrieben, so erhält diese bei jedem Würfelwurf ein DiceEvent. - * Ein DiceEvent ermöglicht einem detaillierte Informationen rund um diesen Würfelwurf in Erfahrung zu bringen. - */ -declare class DiceEvent { - /** - * Liefert den Nutzer, der gewürfelt hat. - */ - getUser(): User; - /** - * Liefert das DiceResult des Würfelwurfs. - */ - getDiceResult(): DiceResult; -} - -/** - * Ein DiceResult beinhaltet konkrete Informationen über einen Würfelwurf. - */ -declare class DiceResult { - /** - * Liefert die Konfiguration mit der gewürfelt wurde. - */ - getDiceConfiguration(): DiceConfiguration; - /** - * Liefert ein Array mit Details zu den einzelnen Ergebnissen pro Würfeltyp. - */ - getSingleDiceResults(): SingleDiceResult[]; - /** - * Liefert die Summe der Augenzahlen aller Würfel - */ - totalSum(): number; -} - -/** - * Die Instanz einer Domain beinhaltet alle relevanten Informationen zur Domain. - */ -declare class Domain { - /** - * Liefert ein den Domain-Namen der aktuellen Domain. - */ - getDomainName(): string; -} - -/** - * Die Instanz von ExternalServerAccess erhält man über die KnuddelsServer.getExternalServerAccess(). - * Damit der Zugriff auf einen externern Server funktioniert, muss auf dem Server eine Datei knuddelsAccess.txt abgelegt werden, die die FTP-User-ID des Entwicklers enthält. - */ -declare class ExternalServerAccess { - /** - * Liefert eine Liste aller zugreifbaren Domains - */ - getAllAccessibleDomains(): Domain[]; - /** - * Prüft den Zugriff auf eine bestimmte URL. Wird je Kombination von "Protokoll + Host + Port" geprüft.
- * Beispiel: http://www.example.de:8080 - */ - canAccessURL(urlString: string): boolean; - /** - * Macht einen GET-Request auf die übergebene URL und liefert den Inhalt zurück. - * Diese Methode ist eine Convenience-Methode für externalServerAccess.callURL(). - */ - getURL( - urlString: string, - parameters?: { - onSuccess?(responseData: string, externalServerResponse: ExternalServerResponse): void; - onFailure?(responseData: string, externalServerResponse: ExternalServerResponse): void; - }): void; - /** - * Macht einen POST-Request auf die übergebene URL und liefert den Inhalt zurück. - * Diese Methode ist eine Convenience-Methode für externalServerAccess.callURL(). - */ - postURL( - urlString: string, - parameters?: { - onSuccess?(responseData: string, externalServerResponse: ExternalServerResponse): void; - onFailure?(responseData: string, externalServerResponse: ExternalServerResponse): void; - data?: Json; - }): void; - /** - * Macht einen GET-Request auf die übergebene URL. Im Gegensatz zum GET-Request wird der Inhalt der Webseite wird nicht ausgelesen. - * Aus diesem Grund ist diese Methode schneller. - * Diese Methode ist eine Convenience-Methode für externalServerAccess.callURL(). - */ - touchURL( - urlString: string, - parameters?: { - onSuccess?(responseData: string, externalServerResponse: ExternalServerResponse): void; - onFailure?(responseData: string, externalServerResponse: ExternalServerResponse): void; - }): void; - /** - * Macht einen Request auf die übergebene URL. - */ - callURL( - urlString: string, - parameters?: { - onSuccess?(responseData: string, externalServerResponse: ExternalServerResponse): void; - onFailure?(responseData: string, externalServerResponse: ExternalServerResponse): void; - method?: ("GET" | "POST"); - data?: Json; - }): void; -} - -/** - * Die Instanz von ExternalServerResponse erhält in den onSuccess- und onFailure-Callbacks der Methoden von - * ExternalServerAccess. Es enthält alle notwendigen Daten zum Verarbeiten. - */ -declare class ExternalServerResponse { - /** - * Liefert die abgefragte URL. - */ - getURLString(): string; - /** - * Liefert den HTTP-Statuscode der Seite. - */ - getResponseCode(): number; - /** - * Liefert ein Objekt, das die Headerdaten der Antwort enthält. - */ - getHeaderFields(): { [key: string]: string[] }; -} - -/** - * Gender repräsentiert das Geschlecht eines User. - */ -declare class Gender { - /** - * Das Geschlecht ist männlich. - */ - static readonly Male: Gender; - /** - * Das Geschlecht ist weiblich. - */ - static readonly Female: Gender; - /** - * Das Geschlecht ist nicht bekannt. - */ - static readonly Unknown: Gender; -} - -/** - * Repräsentiert eine HTML-Datei, die auf dem Server im Ordner /www liegt. - */ -declare class HTMLFile { - /** - * - */ - constructor(assetPath: string, pageData?: Json); - /** - * Liefert den Pfad, der beim Anlegen der HTMLFile-Instanz genutzt wurde. - */ - getAssetPath(): string; - /** - * Liefert die pageData, die beim Anlegen der HTMLFile-Instanz genutzt wurden. - */ - getPageData(): Json; -} - -/** - * Eine Instanz von KnuddelAccount ermöglicht den Zugriff auf die freigegebenen Knuddel - * eines bestimmten User. Knuddel können abgezogen und addiert werden. - */ -declare class KnuddelAccount { - /** - * Liefert den KnuddelAmount eines Users, - * über den die App gerade frei verfügen kann. - */ - getKnuddelAmount(): KnuddelAmount; - /** - * Liefert den KnuddelAmount aus dem KnuddelAccount, - * der bereits von der App genutzt wurde. - * Beim Auszahlen dieser Knuddel aus dem KnuddelAccount an den - * User fallen Steuern an. - */ - getKnuddelAmountUsed(): KnuddelAmount; - /** - * Liefert den KnuddelAmount aus dem KnuddelAccount, - * der noch nicht von der App genutzt wurde. - * Beim Auszahlen dieser Knuddel aus dem KnuddelAccount an den - * User fallen keine Steuern an. - */ - getKnuddelAmountUnused(): KnuddelAmount; - /** - * Liefert die Summe aller Transfers, die die App an diesen KnuddelAccount bzw. User überwiesen hat. - */ - getTotalKnuddelAmountAppToUser(): KnuddelAmount; - /** - * Liefert die Summe aller Transfers, die die App von diesem KnuddelAccount bzw. User abgebucht/erhalten hat. - */ - getTotalKnuddelAmountUserToApp(): KnuddelAmount; - /** - * Liefert die Information, ob in diesem Moment genug Knuddel verfügbar sind. - */ - hasEnough(knuddelAmount: KnuddelAmount): boolean; - /** - * Liefert den Nutzer, dem der KnuddelAccount gehört. - */ - getUser(): User; - /** - * Versucht eine bestimmte Menge Knuddel zu verwenden. Dies ist nur möglich, wenn der User auf seinem KnuddelAccount - * genug Knuddel besitzt und online im Channel ist. - * Vom KnuddelAccount des Besitzer des Channel können Knuddel auch abgebucht werden, wenn dieser nicht im Channel online ist. - * - * Ist das Event App.onBeforeKnuddelReceived implementiert, so wird diese direkt nach dem use aufgerufen, - * um zu entscheiden, ob die Knuddel angenommen werden sollen. - * - *

Hinweis: Knuddel an einen Nutzer senden kannst du mit der Methode BotUser/transferKnuddel:method. - */ - use(knuddelAmount: KnuddelAmount, displayReasonText: string, parameters?: { transferReason?: string; onError?(message: string): void; onSuccess?(): void; }): void; -} - -/** - * Eine Instanz von KnuddelAmount repräsentiert eine bestimmte Anzahl von Knuddel. - */ -declare class KnuddelAmount { - /** - * Erzeugt eine Instanz von KnuddelAmount mit der Anzahl Knuddel. - */ - constructor(knuddel: number); - /** - * Erzeugt eine Instanz von KnuddelAmount mit einer bestimmten Cent-Anzahl. - */ - static fromCents(knuddel: number): KnuddelAmount; - /** - * Erzeugt eine Instanz von KnuddelAmount mit einer bestimmten Knuddel-Anzahl. - */ - static fromKnuddel(knuddel: number): KnuddelAmount; - /** - * Liefert die Anzahl der Knuddel in KnuddelCent zurück. - */ - getKnuddelCents(): number; - /** - * Gibt den Wert der Knuddel als Zahl zurück. - */ - asNumber(): number; - /** - * Liefert eine negierte Kopie des KnuddelAmount zurück. - */ - negate(): KnuddelAmount; - /** - * Liefert die Information, ob der Knuddelwert unter 0 ist. - */ - isNegative(): boolean; -} - -/** - * Repräsentiert einen KnuddelPot. - * Ein KnuddelPot kann nur durch Factory-Methoden des KnuddelsServer erzeugt werden: - * KnuddelsServer/createKnuddelPot:method. - * - * Wird die App heruntergefahren, so werden alle KnuddelPots, die nicht gesealt sind automatisch refunded. - */ -declare class KnuddelPot { - /** - * Liefert die id des KnuddelPot. - */ - getId(): number; - /** - * Liefert den Status des KnuddelPot. - */ - getState(): KnuddelPotState; - /** - * Liefert den beim Kreieren des KnuddelPots festgelegten KnuddelAmount, den jeder Teilnehmer zahlen muss. - */ - getKnuddelAmountPerParticipant(): KnuddelAmount; - /** - * Liefert den KnuddelAmount, der bisher insgesamt in den KnuddelPot eingezahlt wurde. - */ - getKnuddelAmountTotal(): KnuddelAmount; - /** - * Liefert die Liste der Teilnehmer, die bisher in den KnuddelPot eingezahlt haben. - */ - getParticipants(): User[]; - /** - * Liefert den höchsten Multiplikator, der gültig ist. - */ - getMaxFeeMultiplier(): number; - /** - * Setzt den BotUser, der den Anteil der Einzahlungen nach dem Spiel erhält - * und den Anteil, vom Gesamtpot, den er erhalten soll. - */ - setFee(feeUser: BotUser, feeMultiplier: number): void; - /** - * Liefert den mit KnuddelPot/setFee:method gesetzten BotUser an den die Gebühr ausbezahlt wird. - */ - getFeeUser(): User; - /** - * Liefert den mit KnuddelPot/setFee:method gesetzten Multiplikator der Gebühr. - */ - getFeeMultiplier(): number; - /** - * Versiegelt den KnuddelPot, sodass keine weiteren Einzahlungen vorgenommen - * werden können und Gewinne ausgeschüttet werden können. - */ - seal(): void; - /** - * Bezahlt alle Einsätze an die Teilnehmer zurück und informiert mit dem übergeben Text über den Grund. - */ - refund(reason?: string): void; - /** - * Fügt einen Gewinner in die Liste der Gewinner hinzu. - * Der zweite Parameter ist die Gewichtung mit der ausgezahlt werden soll. - * Wird der Parameter weggelassen, so ist er automatisch 1. - */ - addWinner(user: User, weight?: number): void; - /** - * Zahlt den KnuddelPot an die mit addWinner gesetzten Gewinner aus. - */ - payout(text?: string): void; -} - -/** - * Repräsentiert den Status eines KnuddelPot. - */ -declare class KnuddelPotState { - /** - * Der KnuddelPot ist geöffnet und kann neue Teilnehmer annehmen. - */ - static readonly Open: KnuddelPotState; - /** - * Der KnuddelPot ist versiegelt und kann keine neuen Teilnehmer annehmen. - */ - static readonly Sealed: KnuddelPotState; - /** - * Der KnuddelPot ist beendet und die Knuddel bereits ausgezahlt. - */ - static readonly Closed: KnuddelPotState; -} - -/** - * Ein KnuddelTransfer ist ein Container-Objekt für die Daten, die bei einer Knuddel-Transaktion von einem User - * an eine App anfallen. - * - * Implementiert man den App-Hook onBeforeKnuddelReceived, so kann man dort entscheiden, ob man den KnuddelTransfer - * annimmt oder ablehnt. - */ -declare class KnuddelTransfer { - /** - * Liefert den User, der den KnuddelTransfer ausgelöst hat. - */ - getSender(): User; - /** - * Liefert den BotUser, der die Knuddel des KnuddelTransfer erhält, - * wenn dieser mit accept() angenommen wurde. - */ - getReceiver(): BotUser; - /** - * Liefert die Anzahl der Knuddel, die mit diesem Transfer überwiesen werden. - */ - getKnuddelAmount(): KnuddelAmount; - /** - * Liefert den Grund für den Transfer, der bei der Überweisung angegeben wurde mit - * /appknuddel BOTNICK:KNUDDEL:GRUND. - */ - getTransferReason(): string; - /** - * Lehnt die Knuddel aus dem KnuddelTransfer ab und sendet sie zurück an den Absender. - * Als Grund sieht der Absender den übergebenen reason. - * - * Diese Methode wirft eine Exception, wenn sie auf einen bereits verarbeiteten Transfer aufgerufen wird. - * Sie kann nur erfolgreich aus dem AppHook onBeforeKnuddelReceived aufgerufen werden. - * - * In der Methode onBeforeKnuddelReceived kann genau ein Aufruf einer dieser drei Methoden gemacht werden: - * KnuddelTransfer/accept:method, - * KnuddelTransfer/addToPot:method, - * KnuddelTransfer/reject:method - */ - reject(reason: string): void; - /** - * Nimmt die Knuddel aus dem KnuddelTransfer an und übergibt sie an den BotUser, - * der mit getReceiver() abgefragt werden kann. - * - * Diese Methode wirft eine Exception, wenn sie auf einen bereits verarbeiteten Transfer aufgerufen wird. - * Sie kann nur erfolgreich aus dem AppHook onBeforeKnuddelReceived aufgerufen werden. - * In der Methode onBeforeKnuddelReceived kann genau ein Aufruf einer dieser drei Methoden gemacht werden: - * - * KnuddelTransfer/accept:method, - * KnuddelTransfer/addToPot:method, - * KnuddelTransfer/reject:method - */ - accept(): void; - /** - * Liefert die Information, ob ein bestimmter KnuddelTransfer zu einem KnuddelPot hinzugefügt werden kann. - */ - canAddToPot(pot: KnuddelPot): boolean; - /** - * Nimmt die Knuddel aus dem KnuddelTransfer an und übergibt sie an den übergebenen KnuddelPot. - * - * Diese Methode funktioniert analog zu KnuddelTransfer/accept:method, nur dass die Knuddel im KnuddelPot statt beim BotUser landen. - * - * Diese Methode wirft eine Exception, wenn sie auf einen bereits verarbeiteten Transfer aufgerufen wird. - * Sie kann nur erfolgreich aus dem AppHook onBeforeKnuddelReceived aufgerufen werden. - * - * In der Methode onBeforeKnuddelReceived kann genau ein Aufruf einer dieser drei Methoden gemacht werden: - * KnuddelTransfer/accept:method, - * KnuddelTransfer/addToPot:method, - * KnuddelTransfer/reject:method - */ - addToPot(knuddelPot: KnuddelPot): void; - /** - * Liefert die Information, ob der KnuddelTransfer bereits verarbeitet wurde. - * Falls die Methode false zurückliefert muss noch entschieden werden, ob der - * KnuddelTransfer angenommen oder abgelehnt wird. - */ - isProcessed(): boolean; -} - -/** - * KnuddelTransferDisplayType repräsentiert die Art der Darstellung einer Knuddel-Überweisung. - */ -declare class KnuddelTransferDisplayType { - /** - * Nachricht wird öffentlich angezeigt. - */ - static readonly Public: KnuddelTransferDisplayType; - /** - * Nachricht wird privat angezeigt. - */ - static readonly Private: KnuddelTransferDisplayType; - /** - * Nachricht wird als /m zugestellt. - */ - static readonly Post: KnuddelTransferDisplayType; -} - -/** - * KnuddelsServer ist die 'Einstiegsklasse'. Mit den statischen Methoden des KnuddelsServer erhält man Zugriff auf viele - * Objekte und Klassen, die im Verlauf der App-Entwicklung benötigt werden. - */ -declare class KnuddelsServer { - /** - * Liefert den BotUser, der standardmäßig zur App gehört. - */ - static getDefaultBotUser(): BotUser; - /** - * Liefert die AppPersistence, mit der sich Zahlen, Strings und Javascript-Objekte langfristig und über die Session einer App hinaus gespeichert werden können. - */ - static getPersistence(): AppPersistence; - /** - * Liefert den Channel in dem die App läuft. - */ - static getChannel(): Channel; - /** - * Liefert das UserAccess-Objekt, über das - * User zugreifbar werden. - */ - static getUserAccess(): UserAccess; - /** - * Liefert ein ExternalServerAccess-Objekt, mit dem - * andere Server angesteuert werden können. - */ - static getExternalServerAccess(): ExternalServerAccess; - /** - * Aktualisiert die Liste der genutzten Hooks. Werden zur Laufzeit chatCommands oder App-Hooks (wie mayJoinChannel) dynamisch erzeugt oder gelöscht, so muss danach refreshHooks() - * aufgerufen werden, damit diese Änderung wirksam wird. - */ - static refreshHooks(): void; - /** - * Liefert den Standard-Logger für diese App. Alles, was geloggt wird, wird vom Nutzer "App-Logs" als private Nachricht zugestellt. - */ - static getDefaultLogger(): Logger; - /** - * Liefert den Pfad eines Bildes zur Integration in der eigenen App. - * Alle Bilder, die im Ordner /www in der App abgelegt werden können hier referenziert werden. - */ - static getFullImagePath(imageName: string): string; - /** - * Liefert den Pfad eines Systembildes zur Integration in der eigenen App. - * Alle Bilder, die unter http://apps4.knuddels.biz/kimg/ - * erreichbar sind können hier referenziert werden. - */ - static getFullSystemImagePath(imageName: string): string; - /** - * Liefert die Informationen über den ChatServer auf dem die App läuft. - */ - static getChatServerInfo(): ChatServerInfo; - /** - * Liefert die Informationen über den AppServer auf dem die App läuft. - */ - static getAppServerInfo(): AppServerInfo; - /** - * Liefert das AppAccess-Object. - */ - static getAppAccess(): AppAccess; - /** - * Erzeugt einen KnuddelPot. - * - * Ist ein KnuddelPot 30 Minuten nach dem Erzeugen noch nicht gesealt, - * so wird vom Server automatisch ein KnuddelPot/refund:method ausgelöst. - */ - static createKnuddelPot( - knuddelAmount: KnuddelAmount, - params?: { - payoutTimeoutMinutes?: number; - shouldSealPot?(pot: KnuddelPot): boolean; - onPotSealed?(pot: KnuddelPot): void; - }): KnuddelPot; - /** - * Liefert den KnuddelPot mit der angegeben id. - */ - static getKnuddelPot(id: number): (KnuddelPot|null); - /** - * Liefert alle für die App noch verwaltbaren KnuddelPot-Objekte. - */ - static getAllKnuddelPots(): KnuddelPot[]; - /** - * Liefert das ToplistAccess-Objekt, über das - * Toplisten erzeugt und verwaltet werden können. - */ - static getToplistAccess(): ToplistAccess; - /** - * Liefert das AppProfileEntryAccess-Objekt, über das - * App-Profileinträge erzeugt und verwaltet werden können. - */ - static getAppProfileEntryAccess(): AppProfileEntryAccess; -} - -/** - * Mit einer Instanz einer LoadConfiguration kann gestaltet werden, wie der Inhalt des HTML User Interface aussieht, bevor es fertig geladen ist. - */ -declare class LoadConfiguration { - /** - * Setzt die Farbe des Hintergrundes vom Loading-View, der angezeigt wird, während das HTML User Interface lädt. (standardmäßig weiß) - */ - setBackgroundColor(color: Color): void; - /** - * Setzt das Hintergrundbild vom Loading-View, das angezeigt wird, während das HTML User Interface lädt. (standardmäßig nicht gesetzt) - */ - setBackgroundImage(imageUrl: string): void; - /** - * Setzt den Text des Ladehinweiseses im Loading-View, der angezeigt wird, während das HTML User Interface lädt. (standardmäßig "Lädt...") - * Hinweis: Wird mit setLoadingIndicatorImage ein Loaading-Indicator-Bild gesetzt, so wird der mit setText gesetzte Texte ignoriert. - */ - setText(text: string): void; - /** - * Setzt ein Loading-Indicator-Bild im Loading-View, das angezeigt wird, während das HTML User Interface lädt. (standardmäßig nicht gesetzt) - * Hinweis: Wird mit setLoadingIndicatorImage ein Loaading-Indicator-Bild gesetzt, so wird der mit setText gesetzte Texte ignoriert. - */ - setLoadingIndicatorImage(imageUrl: string): void; - /** - * Setzt die Farbe des Textes im Loading-View, der angezeigt wird, während das HTML User Interface lädt. (standardmäßig schwarz) - */ - setForegroundColor(color: Color): void; - /** - * Aktiviert/Deaktiviert die Nutzung vom Loading-View. (standardmäßig aktiviert) - * Es kann sinnvoll sein, den Loading-View zu deaktivieren, wenn man selbst einen komplett eigenen Loading-View in seine App einbauen möchte. - */ - setEnabled(enabled: boolean): void; -} - -/** - * Eine Instanz eines Logger ermöglicht das Loggen von Inhalten. - * - * Diese erhält man über das KnuddelsServer-Objekt - * mit KnuddelsServer.getDefaultLogger() - * - * Die Log-Einträge werden je nach Einstellungen im /apps-Fenster an den Besitzer des Channels, - * die App-Manager und den App-Entwickler zugestellt. - */ -declare class Logger { - /** - * Logge einen Text mit Level DEBUG. Dieser wird im Chat allen dafür registrierten AppManagern per /p vom App-Logs-User zugestellt. Siehe: /apps, Tab: Logs. - * - * Die Methode erwartet beliebig viele Strings als Parameter. Diese werden vor dem Logging mit einem Leerzeichen gejoint. - */ - debug(...msg: any[]): void; - /** - * Logge einen Text mit Level INFO. Dieser wird im Chat allen dafür registrierten AppManagern per /p vom App-Logs-User zugestellt. Siehe: /apps, Tab: Logs. - * - * Die Methode erwartet beliebig viele Strings als Parameter. Diese werden vor dem Logging mit einem Leerzeichen gejoint. - */ - info(...msg: any[]): void; - /** - * Logge einen Text mit Level WARN. Dieser wird im Chat allen dafür registrierten AppManagern per /p vom App-Logs-User zugestellt, sowie im /apps Fenster im Log angezeigt. Siehe: /apps, Tab: Logs. - * - * Die Methode erwartet beliebig viele Strings als Parameter. Diese werden vor dem Logging mit einem Leerzeichen gejoint. - */ - warn(...msg: any[]): void; - /** - * Logge einen Text mit Level ERROR. Dieser wird im Chat allen dafür registrierten AppManagern per /p vom App-Logs-User zugestellt, sowie im /apps Fenster im Log angezeigt. Siehe: /apps, Tab: Logs. - * - * Die Methode erwartet beliebig viele Strings als Parameter. Diese werden vor dem Logging mit einem Leerzeichen gejoint. - */ - error(...msg: any[]): void; - /** - * Logge einen Text mit Level FATAL. Dieser wird im Chat allen dafür registrierten AppManagern per /p vom App-Logs-User zugestellt, sowie im /apps Fenster im Log angezeigt. Siehe: /apps, Tab: Logs. - * - * Die Methode erwartet beliebig viele Strings als Parameter. Diese werden vor dem Logging mit einem Leerzeichen gejoint. - */ - fatal(...msg: any[]): void; -} - -/** - * Message ist eine abstrakte Klasse und repräsentiert eine Nachricht im Chat. - */ -declare class Message { - /** - * Liefert den User, der die Nachricht verfasst hat. - */ - getAuthor(): User; - /** - * Liefert den Inhalt der Nachricht. - */ - getText(): string; - /** - * Liefert den genauen Zeitpunkt, zu dem die Nachricht erstellt wurde. - */ - getCreationDate(): Date; -} - -/** - * Repräsentiert die Instanz der konkreten App, auf die dieser Code Zugriff hat. - * - * Die Instanz von OwnAppInstance erhält man über das AppAccess-Objekt - * mit appAccess.getOwnInstance() - */ -declare class OwnAppInstance { - /** - * Gibt Zugriff auf Nutzer, die gerade im Channel dieser AppInstance online sind. - * @since AppServer 82560 - */ - getOnlineUsers(otherAppInstance: AppInstance, ...userType: UserType[]): User[]; -} - -/** - * Eine Instanz von Persistence ermöglicht die persistente Speicherung von Zahlen, Zeichenketten und JSON-Objekten. - * Es gibt die zwei Arten AppPersistence und UserPersistence - * - * Jeder eigene Datentyp hat seinen eigenen Namensraum. - * So kann derselbe key für eine Zahl, Zeichenkette und auch JSON-Objekt genutzt werden. - * - *

Hinweis: Mit der Persistence gespeicherte Informationen überleben - * sogar die Deinstallation und Neuinstallation der App. - */ -declare class Persistence { - /** - * Informiert darüber, ob unter dem key ein String abgespeichert ist. - */ - hasString(key: string): boolean; - /** - * Setzt die Zeichenkette value für den key. - * Falls bereits eine Zeichenkette für den key existiert, so wird diese überschrieben. - */ - setString(key: string, value: string): void; - /** - * Liefert die Zeichenkette, die für den key gespeichert ist. - * Falls für key keine Zeichenkette gespeichert ist, so gibt die Methode - * den defaultValue zurück. - */ - getString(key: string, defaultValue?: string): string; - /** - * Löscht die Zeichenkette, die unter key gespeichert ist. - */ - deleteString(key: string): void; - /** - * Informiert darüber, ob unter dem key eine Zahl abgespeichert ist. - */ - hasNumber(key: string): boolean; - /** - * Setzt die Zahl value für den key. - * Falls bereits eine Zahl für den key existiert, so wird diese überschrieben. - */ - setNumber(key: string, value: number): void; - /** - * Addiert den übergebenen value auf die unter dem Key key vorhandenen Wert drauf. - * Value kann auch negativ sein um eine Subtraktion durchzuführen. - * Falls keine Zahl für den key existiert, so wird der value für key gespeichert. - */ - addNumber(key: string, value: number): number; - /** - * Liefert die Zahl, die für den key gespeichert ist. - * Falls für key keine Zahl gespeichert ist, so gibt die Methode - * den defaultValue zurück. - */ - getNumber(key: string, defaultValue?: number): number; - /** - * Löscht die Zahl, die unter key gespeichert ist. - */ - deleteNumber(key: string): void; - /** - * Informiert darüber, ob unter dem key ein Objekt abgespeichert ist. - */ - hasObject(key: string): boolean; - /** - * Setzt das Objekt value für den key. - * Falls bereits ein Objekt für den key existiert, so wird dieses überschrieben. - * Das als JSON serialisierte Objekt darf maximal 100kb groß sein. - */ - setObject(key: string, object: (KnuddelsJson | KnuddelsJsonArray | KnuddelsSerializable)): void; - /** - * Liefert das Objekt, das für den key gespeichert ist. - * Falls für key kein Objekt gespeichert ist, so gibt die Methode - * den defaultValue zurück. - */ - getObject(key: string, defaultValue?: (KnuddelsJson | KnuddelsJsonArray | KnuddelsSerializable)): (KnuddelsJson | KnuddelsJsonArray | KnuddelsSerializable); - /** - * Löscht das Objekt, das unter key gespeichert ist. - */ - deleteObject(key: string): void; -} - -/** - * Eine Instanz von PrivateMessage repräsentiert eine private Nachricht im Chat. - * Die App erhält sämtliche private Nachrichten, die an einen ihrer BotUser - * geschickt werden. - * - *

Hinweis: Eine App hat keinen Zugriff auf private Nachrichten, - * die Nutzer untereinander schreiben, ohne dass ein BotUser als Empfänger involviert ist. - */ -declare class PrivateMessage extends Message { - /** - * Liefert die Liste der Empfänger der Nachricht. - */ - getReceivingUsers(): User[]; - /** - * Sendet eine private Nachricht an alle Beteiligten des Gespräches. - */ - sendReply(text: string): void; -} - -/** - * Eine Instanz von PublicActionMessage repräsentiert eine öffentliche Handlung im Chat. - * Die App erhält die öffentlichen Handlungen. - */ -declare class PublicActionMessage extends Message { -} - -/** - * Eine Instanz von PublicEventMessage repräsentiert ein öffentliches Event im Chat. - * Die App erhält die öffentlichen Events. - */ -declare class PublicEventMessage extends Message { -} - -/** - * Eine Instanz von PublicMessage repräsentiert eine öffentliche Nachricht im Chat. - * Die App erhält die öffentlichen Nachrichten, die geschrieben werden. - */ -declare class PublicMessage extends Message { -} - -/** - * Eine Quest ist eine konkrete Aufgabe, die ein User in der App zu erledigen hat. - * - * Im Blog findest du Informationen darüber, wie man eine Quest für seine App erhält: - * https://blog.developer.knuddels.de/2015/10/29/how-to-get-a-quest/ - */ -declare class Quest { - /** - * Löst ein Quest-Event aus. - * @since AppServer 82290, ChatServer 82290 - */ - setSolved(count?: number): void; - /** - * Liefert den Key der Quest. - * @since AppServer 82290, ChatServer 82290 - */ - getQuestKey(): string; -} - -/** - * Ein QuestAccess-Objekt ermöglicht den Zugriff auf die Quests, die ein Nutzer des Chats, für die laufende App hat. - * - * Im Blog findest du Informationen darüber, wie man eine Quest für seine App erhält: - * https://blog.knuddels.de/2015/10/29/how-to-get-a-quest/ - */ -declare class QuestAccess { - /** - * Liefert die Quests - * für diesen Nutzer in dieser App. - * @since AppServer 82290, ChatServer 82290 - */ - getQuests(): Quest[]; - /** - * Liefert die Information, ob eine bestimmte Quest offen ist. - * @since AppServer 82290, ChatServer 82290 - */ - hasQuest(questKey: string): boolean; - /** - * Liefert eine bestimmte Quest, falls vorhanden. - * @since AppServer 82290, ChatServer 82290 - */ - getQuest(questKey: string): (Quest|null); - /** - * Liefert den User, der zu diesem QuestAccess-Objekt gehört. - * @since AppServer 82290, ChatServer 82290 - */ - getUser(): User; -} - -/** - * RandomOperations bietet eine Sammlung verschiedener Zufallsoperationen, die man für Glücksspiele und Ähnliches nutzen kann. - */ -declare class RandomOperations { - /** - * Liefert eine Zufallszahl zwischen minValue (inklusiv) und maxValue (exklusiv). - */ - static nextInt(minValue: number /* optional */, maxValue: number): number; - /** - * Liefert ein Array mit Zufallszahlen zwischen minValue (inklusiv) und n (exklusiv). - */ - static nextInts(minValue: number /* optional */, maxValue: number, count: number, onlyDifferentNumbers: boolean): number[]; - /** - * Liefert true in truePropability/1 Fällen - */ - static flipTrue(truePropability: number): boolean; - /** - * Liefert ein zufälliges Objekt aus einem Array. - * Falls das Array leer ist, wird null zurückgeliefert. - */ - static getRandomObject(objects: T[]): T; - /** - * Mischt das Array der übergebenen Objekte und liefert es zurück. - */ - static shuffleObjects(objects: T[]): T[]; - /** - * Liefert einen zufälligen String zurück. - * @since AppServer 92699 - */ - static getRandomString(length: number, allowedCharacters?: string): string; -} - -/** - * Repräsentiert die Root-Instanz einer App, die im Hauptchannel läuft. - * - * Die Instanz für die RootAppInstance erhält man über das AppInstance-Objekt - * mit appInstance.getRootInstance() - */ -declare class RootAppInstance extends AppInstance { - /** - * Aktualisiert diese App im Channel (und ggf. vorhandenen Tochterchanneln) auf die neueste Version. - */ - updateApp(message: string /* optional */, logMessage?: string): void; - /** - * Stoppt diese App. - */ - stopApp(message: string /* optional */, logMessage?: string): void; -} - -/** - * Liefert Informationen über einen Server. - */ -declare class ServerInfo { - /** - * Liefert die interne ServerId des Servers. - */ - getServerId(): string; - /** - * Liefert die Code-Revision des Servers. - */ - getRevision(): number; -} - -/** - * Ein SingleDiceResult enthält das Ergebnis aller Würfel desselben Typs. - * Würfelt man beispielsweise mit der Konfiguration "1w2 + 10w5" so gibt es im DiceResult - * zwei SingleDiceResult-Objekte. Eines für "1w2" und eines für "10w5". - */ -declare class SingleDiceResult { - /** - * Liefert den Würfel zurück, durch den dieses SingleDiceResult erzeugt wurde. - */ - getDice(): Dice; - /** - * Liefert die Ziffern, die gewürfelt wurden. - */ - valuesRolled(): number[]; - /** - * Liefert die Summe der Augenzahlen des SingleDiceResult. - */ - sum(): number; -} - -/** - * Diese Dokumentation beschreibt, welche Erweiterungen am serverseitigen String-Objekt vorgenommen wurden. - */ -interface String { - /** - * Die Methode liefert den String zurück, auf dem sie aufgerufen wurde mit KCode escaped. - */ - escapeKCode(): string; - /** - * Entfernt jeglichen KCode aus dem String und gibt ihn zurück. - */ - stripKCode(): string; - /** - * Diese Methode liefert die Information, ob der String auf dem die Methode aufgerufen wurde - * mit einem bestimmten Prefix beginnt. - */ - startsWith(prefix: string): boolean; - /** - * Diese Methode liefert die Information, ob der String auf dem die Methode aufgerufen wurde - * mit einem bestimmten Suffix endet. - */ - endsWith(suffix: string): boolean; - /** - * Liefert die Breite des Strings in der Schriftart Arial mit der gegeben Schriftgröße und Information, ob Text fett dargestellt werden soll. - */ - getPixelWidth(fontSize: number, isBold: boolean): number; - /** - * Liefert einen String, der in der Schriftart Arial mit der gegeben Schriftgröße und Information, ob Text fett dargestellt werden soll - * maximal maxPixelWidth breit ist. Wird der Text dafür gekürzt, so wird an das Ende abbreviationMarker angehangen. - * Falls abbreviationMarker nicht übergeben wurde, so ist es automatisch '...'. - */ - limitString(fontSize: number, isBold: boolean, maxPixelWidth: number, abbreviationMarker?: string): string; - /** - * Liefert die Information, ob ein bestimmter String in diesem String vorhanden ist. - */ - contains(needle: string): boolean; - /** - * Liefert die Levenshtein-Distanz zum übergebenen String. - * Levenshtein-Distanz: Minimale Anzahl von Einfüge-, Lösch- und Ersetz-Operationen, um die erste Zeichenkette in die zweite umzuwandeln. - * @since AppServer 82271 - */ - minimalConversionCost(otherString: string): number; - /** - * Liefert die Information, ob der String nur aus Zeichen besteht, die in einem Nicknamen - * vorkommen dürfen. - * @since AppServer 82271 - */ - hasOnlyNicknameCharacters(): boolean; - /** - * Liefert die Information, ob der String nur aus Zeichen besteht, die Nummern sind. - * @since AppServer 82271 - */ - hasOnlyDigits(): boolean; - /** - * Liefert die Information, ob der String nur aus Zeichen besteht, die alphanumerisch + Whitespaces sind. - * @since AppServer 82271 - */ - hasOnlyAlphanumericalAndWhitespaceCharacters(): boolean; - /** - * Liefert die Information, ob der String leer oder null ist. - * @since AppServer 92695 - */ - isEmpty(): boolean; - /** - * Liefert den String in CamelCase. - * @since AppServer 92695 - */ - toCamelCase(): string; - /** - * Liefert den String mit dem ersten Buchstaben als Großbuchstaben. - * @since AppServer 92695 - */ - capitalize(): string; - /** - * Erstellt eine Kopie des String, in dem alle Vorkommnisse des String search in replacement - * ersetzt werden und liefert diesen zurück. - */ - replaceAll(search: string | RegExp, replacement: string): string; - /** - * Prüft primitiv, ob der String laut Knuddels-Filterregeln ok ist. - * @since ChatServer 82262, AppServer 82262 - */ - isOk(): boolean; -} - -/** - * Eine Instanz einer Toplist repräsentiert eine eigene Topliste für einen bestimmten userPersistenceNumberKey. - */ -declare class Toplist { - /** - * Liefert den userPersistenceNumberKey mit dem die Topliste erzeugt wurde. - */ - getUserPersistenceNumberKey(): string; - /** - * Liefert den Anzeigenamen der Topliste. - */ - getDisplayName(): string; - /** - * Liefert den Befehl, der im Chat eingegeben werden kann, um diese Topliste zu öffnen. - * Wird ein User oder eine userId übergeben, so öffnet sich die Topliste mit diesem Nutzer im Fokus. - */ - getChatCommand(user_or_userId?: (User|number)): string; - /** - * Liefert den Anzeigenamen für den übergebenen User oder eine userId. - */ - getLabel(user_or_userId: (User|number)): string; - /** - * Legt einen Change-Listener an, der jedes mal aufgerufen wird, wenn ein User - * einen neuen Anzeigenamen erhält. - */ - addLabelChangeListener(listener: (labelChangeEvent: ToplistLabelChangeEvent) => void): void; - /** - * Löscht einen LabelChangeListener, der mit Toplist/addLabelChangeListener:method erzeugt wurde. - */ - removeLabelChangeListener(listener: (labelChangeEvent: ToplistLabelChangeEvent) => void): void; - /** - * Legt einen Change-Listener an, der jedes mal aufgerufen wird, wenn ein sich der Rang User eines Nutzers ändert. - */ - addRankChangeListener(listener: (rankChangeEvent: ToplistRankChangeEvent) => void): void; - /** - * Löscht einen RankChangeListener, der mit Toplist/addRankChangeListener:method erzeugt wurde. - */ - removeRankChangeListener(listener: (rankChangeEvent: ToplistRankChangeEvent) => void): void; -} - -/** - * Mit einer Instanz von ToplistAccess kann eine App - * Toplist erzeugen und verwalten. - * - * Die Instanz für die ToplistAccess erhält man über das KnuddelsServer-Objekt - * mit KnuddelsServer.getToplistAccess() - */ -declare class ToplistAccess { - /** - * Liefert die Liste aller Toplisten, die diese App erzeugt hat. - */ - getAllToplists(): Toplist[]; - /** - * Liefert die Toplist mit dem Persistenz-Key zurück. - */ - getToplist(userPersistenceNumberKey: string): Toplist; - /** - * Löscht die übergebene Toplist oder die Toplist mit dem Persistenz-Key. - */ - removeToplist(toplist: Toplist): void; - /** - * Erzeugt oder aktualisiert die Toplist für den übergebenen userPersistenceNumberKey. - */ - createOrUpdateToplist(userPersistenceNumberKey: string, displayName: string, parameters?: { labelMapping?: { [minValue: string]: string }; ascending?: boolean; }): Toplist; -} - -/** - * ToplistDisplayType repräsentiert den Anzeigetyp eines Toplisteneintrags im Profil vonUsern. - */ -declare class ToplistDisplayType { - /** - * Nur Anzeigename anzeigen. - */ - static readonly Label: ToplistDisplayType; - /** - * Gespeicherten Wert anzeigen. - */ - static readonly Value: ToplistDisplayType; - /** - * Anzeigename und Rang anzeigen. - */ - static readonly LabelAndRank: ToplistDisplayType; - /** - * Wert und Rang anzeigen. - */ - static readonly ValueAndRank: ToplistDisplayType; -} - -/** - * ToplistLabelChangeEvents erhalten EventListener die bei einer - * Toplist mit der Methode Toplist/addLabelChangeListener:method - * erzeugt wurden, nachdem sich der Anzeigename für einen User geändert hat. - * - * Das ToplistLabelChangeEvent enthält alle wichtigen Daten, um auf die Änderung zu reagieren - * und dem User beispielsweise für den Aufstieg zu gratulieren. - */ -declare class ToplistLabelChangeEvent { - /** - * Liefert die zugehörige Toplist. - */ - getToplist(): Toplist; - /** - * Liefert den vorherigen Anzeigenamen. Hatte der User vorher keinen - * Anzeigenamen, so ist dieser Wert null. - */ - getOldLabel(): string; - /** - * Liefert den neuen Anzeigenamen. Hatte der User nun keinen - * Anzeigenamen mehr, so ist dieser Wert null. - */ - getNewLabel(): string; - /** - * Liefert den User für den das Event ausgelöst wurde. - */ - getUser(): User; - /** - * Liefert den Wert, der vor der Änderung gespeichert war. - */ - getOldValue(): number; - /** - * Liefert den neuen Wert. - */ - getNewValue(): number; -} - -/** - * ToplistRankChangeEvents erhalten EventListener die bei einer - * Toplist mit der Methode Toplist/addRankChangeListener:method - * erzeugt wurden, nachdem sich der Rang für einen User geändert hat. - * - * Das ToplistRankChangeEvent enthält alle wichtigen Daten, um auf die Änderung zu reagieren - * und den überholten Usern eine Nachricht zu senden. - */ -declare class ToplistRankChangeEvent { - /** - * Liefert die zugehörige Toplist. - */ - getToplist(): Toplist; - /** - * Liefert den Toplisten-Rang, den der User vor der Änderung hatte. - */ - getOldRank(): number; - /** - * Liefert den neuen Toplisten-Rang, des Users. - */ - getNewRank(): number; - /** - * Liefert den User für den das Event ausgelöst wurde. - */ - getUser(): User; - /** - * Liefert die User, die bei dieser Änderung überholt worden sind. - *

Achtung: Wenn mehr als 10 User - * überholt wurden, so liefert die Methode die besten 10 überholten User. - */ - getUsersOvertook(): User[]; - /** - * Liefert den Wert, der vor der Änderung gespeichert war. - */ - getOldValue(): number; - /** - * Liefert den neuen Wert. - */ - getNewValue(): number; -} - -/** - * Ein User ist ein Nutzer des Chats, in dem die App läuft. - */ -declare class User { - /** - * Liefert die eindeutige Nutzerkennung des Nutzers. - */ - getUserId(): number; - /** - * Liefert den Nicknamen des Nutzers. - */ - getNick(): string; - /** - * Liefert das Alter des Nutzers. Bei Nutzern, die bereits sehr lange in der Plattform sind kann es vorkommen, dass kein Alter angegeben wurde. In diesem Fall ist das Alter 0. - */ - getAge(): number; - /** - * Liefert das Geschlecht des Nutzers. - */ - getGender(): Gender; - /** - * Liefert den Zeitpunkt der Registrierung des Nutzers. - */ - getRegDate(): Date; - /** - * Liefert den UserStatus des Nutzers. - */ - getUserStatus(): UserStatus; - /** - * Liefert den UserType des Nutzers. - */ - getUserType(): UserType; - /** - * Liefert den aktuellen ClientType des Nutzers oder Offline wenn er nicht im Chat online ist. - */ - getClientType(): ClientType; - /** - * Prüft ob der Client des Users den übergebenen AppViewMode (für User/sendAppContent:method) anzeigen kann. - */ - canShowAppViewMode(mode: AppViewMode): boolean; - /** - * Prüft ob der Client des User's den übergebenen AppContent anzeigen kann. - */ - canSendAppContent(appContent: AppContent): boolean; - /** - * Prüft, ob der User in dem angegebenen Team ist. - * Dies funktioniert derzeit nur für Teams, die eine eigene /fa haben. - * - * Achtung: Bei Nutzern, die neu in ein Team kommen, funktioniert die Abfrage erst dann korrekt, - * wenn er sich neu in den Channel eingeloggt hat. - */ - isInTeam(teamName: string, subTeamName?: string): boolean; - /** - * Liefert ein UserPersistence-Objekt für diesen Nutzer. Mit diesem Objekt kann eine App sich Dinge über diesen speziellen Nutzer merken. - */ - getPersistence(): UserPersistence; - /** - * Shortcut-Funktion um mit dem DefaultBotUser eine private Nachricht zu versenden. - */ - sendPrivateMessage(message: string): void; - /** - * Shortcut-Funktion um mit dem DefaultBotUser eine /m zu versenden. - */ - sendPostMessage(topic: string, text: string): void; - /** - * Liefert die Information, ob dieser Nutzer Channelbesitzer im Channel der App ist. - */ - isChannelOwner(): boolean; - /** - * Liefert die Information, ob der Channel der App - * ein Lieblingschannel des Nutzers ist. - */ - isLikingChannel(): boolean; - /** - * Liefert die Information, ob der Nutzer im harten Kern des Channels der App ist. - * @since AppServer 92701, ChatServer 92701 - */ - isChannelCoreUser(): boolean; - /** - * Liefert die Information, ob dieser Nutzer ein AppManager für diese App ist. Die Channelbesitzer zählen automatisch auch als AppManager. - */ - isAppManager(): boolean; - /** - * Liefert Information, ob dieser Nutzer derzeit für das Schreiben öffentlicher Nachrichten im Channel gesperrt ist. - */ - isMuted(): boolean; - /** - * Liefert Information, ob dieser Nutzer beim Schreiben öffentlicher Nachrichten im Channel - * derzeit für die Verwendung von Textformatierungen, Farben und Smileys gesperrt ist. - */ - isColorMuted(): boolean; - /** - * Liefert Information, ob dieser Nutzer derzeit für das Betreten des Channel gesperrt ist. - */ - isLocked(): boolean; - /** - * Liefert Information, ob dieser Nutzer Channelmoderator im Channel der App ist. - */ - isChannelModerator(): boolean; - /** - * Liefert Information, ob dieser Nutzer Eventmoderator im Channel der App ist. - */ - isEventModerator(): boolean; - /** - * Liefert Information, ob dieser Nutzers der Entwickler der App ist. - */ - isAppDeveloper(): boolean; - /** - * Liefert einen Link zum Profil des Nutzers, den man im Chat anzeigen kann. - */ - getProfileLink(displayText?: string): string; - /** - * Liefert die Information, ob der Nutzer online im Channel der App ist. - */ - isOnlineInChannel(): boolean; - /** - * Liefert die Anzahl der Knuddel, die der Nutzer besitzt. - */ - getKnuddelAmount(): KnuddelAmount; - /** - * Liefert die Information, ob der Nutzer irgendwo im Chat online ist. - */ - isOnline(): boolean; - /** - * Liefert die Readme des Nutzers, die er mit /readme TEXT in sein Profil gesetzt hat. - */ - getReadme(): string; - /** - * Liefert die vom Nutzer verbrachte Zeit im gesamten Chatsystem In Minuten. - * Hinweis: Die Minutenzahl wird derzeit immer nur zu dem Zeitpunkt aktualisiert, - * wenn der Nutzer offline geht. - */ - getOnlineMinutes(): number; - /** - * Liefert die Information, ob der Nutzer sich mittels /away-Funktion kurz abgemeldet hat. - */ - isAway(): boolean; - /** - * Liefert die Information, ob der Nutzer ein Profilfoto hat. - */ - hasProfilePhoto(): boolean; - /** - * (Er)setzt den übergebenen AppContent beim Nutzer. - */ - sendAppContent(appContent: AppContent): AppContentSession; - /** - * Liefert alle AppContentSession, die der User - * aktuell geöffnet hat. - */ - getAppContentSessions(): AppContentSession[]; - /** - * Liefert die AppContentSession, die der User - * mit einem bestimmten AppViewMode aktuell geöffnet hat. - */ - getAppContentSession(appViewMode: AppViewMode): AppContentSession; - /** - * Vergleicht den übergebenen Nutzer und liefert true, falls der übergebene Nutzer - * identisch ist mit dem aktuellen Nutzer. - */ - equals(user: User): boolean; - /** - * Liefert die URL zum Profilfoto des Nutzers. Die übergebene Breite und Höhe - * liefern dem Server einen Anhaltswert, um das bestmögliche Foto zu finden, - * sind aber keine Garantie, dass das Foto diese Ausmaße haben wird. - */ - getProfilePhoto(width: number, height: number): string; - /** - * Liefert das QuestAccess-Objekt - * für diesen Nutzer in dieser App. - * @since AppServer 82290, ChatServer 82290 - */ - getQuestAccess(): QuestAccess; - /** - * Liefert die Information, ob der Nutzer gerade sein Video streamt. - */ - isStreamingVideo(): boolean; - /** - * Liefert den KnuddelAccount des Nutzers. - */ - getKnuddelAccount(): KnuddelAccount; - /** - * Liefert die ChannelTalkPermission für diesen Nutzer in diesem - * Channel. - */ - getChannelTalkPermission(): ChannelTalkPermission; - /** - * Liefert die Information, ob der User ein verifiziertes Profilbild hat. - */ - isProfilePhotoVerified(): boolean; - /** - * Liefert die Information, ob das Alter des Users verifiziert ist. - */ - isAgeVerified(): boolean; - /** - * Setzt dem Nutzer ein Icon in die Nickliste, das auf der rechten Seite seines Nicks angezeigt wird. - * Der Eintrag wird automatisch entfernt, sobald der Nutzer den Channel verlässt, - * kann aber auch mit User/removeNicklistIcon:method - * entfernt werden. - */ - addNicklistIcon(imagePath: string, imageWidth: number): void; - /** - * Entfernt dem Nutzer ein über die API gesetztes Icon in die Nickliste. - */ - removeNicklistIcon(imagePath: string): void; - /** - * Startet einen Würfelwurf für den Nutzer, falls er online im Channel ist und er nicht gemuted ist. - * @since AppServer 89159, ChatServer 89159 - */ - triggerDice(diceConfiguration: DiceConfiguration): void; -} - -/** - * Mit einer Instanz von UserAccess kann eine App - * auf User zugreifen, die bereits einmal im Channel waren, - * als die App lief. Für alle nicht zugreifbaren User kann man via UserAccess den korrekt geschriebenen Nicknamen erhalten. - * - * Die Instanz für die UserAccess erhält man über das KnuddelsServer-Objekt - * mit KnuddelsServer.getUserAccess() - */ -declare class UserAccess { - /** - * Liefert die userId des Nutzers mit dem übergebenen Nicknamen. - */ - getUserId(nick: string): number; - /** - * Informiert darüber, ob ein Nutzer mit dem übergebenen Nicknamen existiert. - */ - exists(nick: string): boolean; - /** - * Informiert darüber, ob der Nutzer mit der übergebenen userId geladen werden darf. Neben dem AppDeveloper können nur Nutzer geladen werden, die sich einmal im Channel befanden, als die App - * lief. - */ - mayAccess(userId: number): boolean; - /** - * Liefert den Nutzer mit der übergebenen userId. Neben dem AppDeveloper können nur Nutzer geladen werden, die sich einmal im Channel befanden, als die App lief. Es wird empfohlen vor der - * Abfrage von getUserById(userId) mit UserAccess/mayAccess:method abzufragen, ob dies funktionieren wird. - */ - getUserById(userId: number): User; - /** - * Liefert den Nicknamen des Nutzers mit der übergebenen userId in der korrekten Schreibweise. - */ - getNick(userId: number): string; - /** - * Loopt über alle zugreifbaren User sortiert nach Registrierzeitpunkt und - * führt für jeden User das übergebene Callback aus. - */ - eachAccessibleUser( - callback: (user: User, index: number, accessibleUserCount: number, key?: string) => boolean, - parameters?: { - onStart?(accessibleUserCount: number, key?: string): void; - onEnd?(accessibleUserCount: number, key?: string): void; - }): void; -} - -/** - * Für jeden User kann eine UserPersistence angefordert werden, um sich - * für einen bestimmten Nutzer Dinge persistent zu merken. - */ -declare class UserPersistence extends Persistence { - /** - * Löscht alle Zahlenwerte, die in dieser UserPersistence gespeichert sind. - * @since AppServer 88569 - */ - deleteAllNumbers(): number; - /** - * Löscht alle Objekte, die in dieser UserPersistence gespeichert sind. - * @since AppServer 88569 - */ - deleteAllObjects(): number; - /** - * Löscht alle Zeichenketten, die in dieser UserPersistence gespeichert sind. - * @since AppServer 88569 - */ - deleteAllStrings(): number; - /** - * Löscht alle Daten, die in dieser UserPersistence gespeichert sind. - * @since AppServer 88569 - */ - deleteAll(): number; -} - -/** - * Diese Klasse repräsentiert einen Eintrag der Persistenz. - */ -declare class UserPersistenceNumberEntry { - /** - * Liefert den Nutzer. - */ - getUser(): User; - /** - * Liefert den Wert. - */ - getValue(): number; - /** - * Liefert den Rang des Elements in der Persistenz. - */ - getRank(): number; - /** - * Liefert die Position des Elements in der Persistenz. - */ - getPosition(): number; -} - -/** - * Mit dieser Klasse ist es möglich nicht User-spezifische Abfragen auf die UserPersistence auszuführen. - */ -declare class UserPersistenceNumbers { - /** - * Liefert die Summe aller via UserPersistence gespeicherten Zahlen für den übergebenen key. - */ - static getSum(key: string): number; - /** - * Löscht alle gespeicherten Zahlen-Werte für den übergebenen key. - */ - static deleteAll(key: string): number; - /** - * Liefert die Anzahl aller unterschiedlichen Nutzer, die Werte für einen bestimmten key gespeichert haben. - * Hierbei kann optional der Wertebereich über die parameters eingegrenzt werden. - */ - static getCount(key: string, parameters?: { minimumValue?: number; maximumValue?: number; }): number; - /** - * Ändert einen bestimmten key bei allen UserPersistence. - */ - static updateKey(oldKeyName: string, newKeyName: string): number; - /** - * Ändert alle Werte für einen bestimmten key, die vorher einen bestimmten anderen Wert hatten in der UserPersistence. - *
Hinweis: Da diese Methode ein Batch-Update ist werden keine Change-Listener (ToplistRankChangeEvent, ToplistLabelChangeEvent) ausgelöst. - */ - static updateValue(key: string, oldValue: number, newValue: number): number; - /** - * Addiert einen Wert für Einträge mit einem bestimmten key in der UserPersistence. - *
Hinweis: Da diese Methode ein Batch-Update ist werden keine Change-Listener (ToplistRankChangeEvent, ToplistLabelChangeEvent) ausgelöst. - */ - static addNumber(key: string, value: number, parameters?: { minimumValue?: number; maximumValue?: number; targetUsers?: User[]; }): number; - /** - * Liefert ein Array mit UserPersistenceNumberEntry-Objekten für einen bestimmten key. - * Hierdurch kann beispielsweise eine blätterbare Topliste abgebildet werden. - */ - static getSortedEntries(key: string, parameters?: { ascending?: boolean; count?: number; page?: number; minimumValue?: number; maximumValue?: number; }): UserPersistenceNumberEntry[]; - /** - * Liefert ein Array mit UserPersistenceNumberEntry-Objekten für einen bestimmten key. Hierbei werden die nähesten Elemente gewählt, - * die am übergebenen User/UserId liegen. - * - * Beispiel: Der Nutzer ist in der Liste auf Position 20, dann werden die Resultate von 14-24 bei einem Count von 10 ausgegeben. - * Beispiel: Der Nutzer ist in der Liste auf Position 3, dann werden die Resultate von 1-10 bei einem Count von 10 ausgegeben. - */ - static getSortedEntriesAdjacent(key: string, user_or_userId: (User|number), parameters?: { ascending?: boolean; count?: number; }): UserPersistenceNumberEntry[]; - /** - * Liefert die absolute Position des Nutzers in der Liste. Die Position ist im Gegensatz zum Rang immer eindeutig. - * - * Bei gleichem Wert hat der Nutzer die höhere Position, der zuerst einen Eintrag in der Persistenz hatte. - * - * Mit der Methode UserPersistenceNumbers/getRank:method kann man den Rang des Nutzers herausfinden. Dieser ist identisch, wenn - * unterschiedliche Nutzer denselben Wert haben. - */ - static getPosition(key: string, user_or_userId: (User|number), parameters?: { ascending?: boolean; minimumValue?: number; }): number; - /** - * Liefert den Rang des Nutzers. Der Rang ist nicht eindeutig. Bei gleicher Punktzahl haben Nutzer denselben Rang. - * Mit der Methode UserPersistenceNumbers/getPosition:method kann man die Position eindeutige Position, statt des Ranges herausfinden. - */ - static getRank(key: string, user_or_userId: (User|number), parameters?: { ascending?: boolean; minimumValue?: number; }): number; - /** - * Ruft eine Funktion für alle Nutzer auf, die einen bestimmten key in der UserPersistence gesetzt haben. - * Hierbei greifen die übergebenen Filter. - */ - static each( - key: string, - callback: { user: User; value: number; index: number; totalCount: number; key: string; }, - parameters?: { - ascending?: boolean; - minimumValue?: number; - maximumValue?: number; - maximumCount?: number; - onStart?(totalCount: number, key: string): void; - onEnd?(totalCount: number, key: string): void; - }): void; - /** - * Liefert alle keys, die für User in der Persistence - * gespeichert wurden. - * @since AppServer 82483 - */ - static getAllKeys(filterKey?: string): string[]; -} - -/** - * Mit dieser Klasse ist es möglich nicht User-spezifische Abfragen auf die UserPersistence auszuführen. - */ -declare class UserPersistenceObjects { - /** - * Löscht alle gespeicherten Objekte für den übergebenen key. - * @since AppServer 82478 - */ - static deleteAll(key: string): number; - /** - * Liefert alle keys, die für User in der Persistence - * gespeichert wurden. - * @since AppServer 82483 - */ - static getAllKeys(filterKey?: string): string[]; -} - -/** - * Mit dieser Klasse ist es möglich nicht User-spezifische Abfragen auf die UserPersistence auszuführen. - */ -declare class UserPersistenceStrings { - /** - * Liefert die Information, ob für einen bestimmten key und value bei einem beliebigen Nutzer eine Paarung existiert. - * @since AppServer 88571 - */ - static exists(key: string, value: string, ignoreCase?: boolean): boolean; - /** - * Löscht alle gespeicherten Strings für den übergebenen key. - * @since AppServer 82478 - */ - static deleteAll(key: string): number; - /** - * Liefert alle keys, die für User in der Persistence - * gespeichert wurden. - * @since AppServer 82483 - */ - static getAllKeys(filterKey?: string): string[]; -} - -/** - * Repräsentiert den Status eines User. - */ -declare class UserStatus { - /** - * Liefert den numerischen Wert das UserStatus. - */ - getNumericStatus(): number; - /** - * Liefert die Information ob der aktuelle UserStatus mindestens so hoch ist, wie der übergebene UserStatus. - */ - isAtLeast(otherUserStatus: UserStatus): boolean; - /** - * - */ - static readonly Newbie: UserStatus; - /** - * - */ - static readonly Family: UserStatus; - /** - * - */ - static readonly Stammi: UserStatus; - /** - * - */ - static readonly HonoryMember: UserStatus; - /** - * - */ - static readonly Admin: UserStatus; - /** - * - */ - static readonly SystemBot: UserStatus; - /** - * - */ - static readonly Sysadmin: UserStatus; -} - -/** - * Repräsentiert den Typ eines User. - */ -declare class UserType { - /** - * Bot der App. - */ - static readonly AppBot: UserType; - /** - * Bot des Knuddels-Chatsystems. - */ - static readonly SystemBot: UserType; - /** - * Menschlicher User. - */ - static readonly Human: UserType; -} - -/** - * VideoChannelData hält Informationen zu laufenden Video-Streams im Channel bereit. - */ -declare class VideoChannelData { - /** - * Liefert alle User die im Channel derzeit ihr Video streamen. - */ - getStreamingVideoUsers(): User[]; -} diff --git a/types/knuddels-userapps-api/knuddels-userapps-api-tests.ts b/types/knuddels-userapps-api/knuddels-userapps-api-tests.ts index 4ee25c84ec..25319722c0 100644 --- a/types/knuddels-userapps-api/knuddels-userapps-api-tests.ts +++ b/types/knuddels-userapps-api/knuddels-userapps-api-tests.ts @@ -8,7 +8,7 @@ class Server implements App { onAppStart() { KnuddelsServer.getChannel() .getOnlineUsers(UserType.Human) - .forEach((user) => { + .forEach((user: User) => { this.onUserJoined(user); }); } @@ -23,7 +23,9 @@ class Server implements App { onUserLeft(user: User) { if (this.usersPlaying.get(user.getNick()) === 1) { KnuddelsServer.getDefaultBotUser() - .transferKnuddel(user, new KnuddelAmount(1), 'Du hast den Channel verlassen.'); + .transferKnuddel(user, new KnuddelAmount(1), { + displayReasonText: 'Du hast den Channel verlassen.' + }); this.usersPlaying.delete(user.getNick()); } @@ -39,8 +41,10 @@ class Server implements App { const user = KnuddelsServer.getUserAccess() .getUserById(userId); - KnuddelsServer.getDefaultBotUser() - .transferKnuddel(user, new KnuddelAmount(1), 'Die App fährt gleich herunter.'); + KnuddelsServer.getDefaultBotUser() + .transferKnuddel(user, new KnuddelAmount(1), { + displayReasonText: 'Die App fährt gleich herunter.' + }); user.getAppContentSessions() .forEach((session: AppContentSession) => { session.remove(); @@ -104,7 +108,9 @@ class Server implements App { if (hasWon) { KnuddelsServer.getDefaultBotUser() - .transferKnuddel(user, new KnuddelAmount(2), 'Richtig getippt...'); + .transferKnuddel(user, new KnuddelAmount(2), { + displayReasonText: 'Richtig getippt...' + }); } setTimeout(() => {