Modul: Core

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()

Methoden

eachAccessibleUser

(
  • callback
  • [parameters]
)

Loopt über alle zugreifbaren User sortiert nach Registrierzeitpunkt und führt für jeden User das übergebene Callback aus.

Parameter:

  • callback Function

    der für jeden User aufgerufen wird. Wird hier als return-value false zurückgegeben, so stoppt das Loopen.

  • [parameters] Object optional

    Objekt zum Übergeben optionaler Parameter

    • [onStart] Function optional

      Callback, das aufgerufen wird, bevor über alle Nutzer geloopt wird

    • [onEnd] Function optional

      Callback, das aufgerufen wird, sobald über alle Nutzer geloopt wurde

    • [online] Boolean optional

      Verfügbar ab Version AppServer 20200525-192452

      Wenn angegeben, so wird der callback nur für User mit dem entsprechenden Online Status aufgerufen (so wie user.isOnline() == online). Es wird aber empfohlen anstatt user.isOnline() diesen Parameter zu verwenden, da dieser intern optimiert ist und nur die passenden User überhaupt lädt.

Beispiel:

var birthdayMailCount = 0;

var parameters = {
    onStart: function(accessibleUserCount)
    {
        KnuddelsServer.getDefaultLogger().info('Starte Geburtstagsmails.');
    },
    onEnd: function(accessibleUserCount)
    {
        KnuddelsServer.getDefaultLogger().info('Ende Geburtstagsmails: ' + birthdayMailCount);
    }
};
userAccess.eachAccessibleUser(function(user, index, accessibleUserCount)
{
    const kAgeYesterday = 'ageYesterday';
    var userPersistence = user.getPersistence();
    
    var ageYesterday = userPersistence.getNumber(kAgeYesterday, 0);
    
    var ageToday = user.getAge();
    
    var ageChanged = ageToday != ageYesterday;
    
    if (ageChanged)
    {
        var topic = 'Alles Gute zum Geburtstag';
        var text = 'Hey! Zu deinem Ehrentag wünschen wir dir alles Gute!';
        
        user.sendPostMessage(topic, text);
        
        userPersistence.setNumber(kAgeYesterday, ageToday);
        birthdayMailCount++;
    }
    
}, parameters);

exists

(
  • nick
)
Boolean

Informiert darüber, ob ein Nutzer mit dem übergebenen Nicknamen existiert.

Parameter:

Rückgabewert:

Boolean:

true, falls ein User mit diesem Nick existiert, false andernfalls

Beispiel:

var nick = 'someAwesomeNick';

var userAccess = KnuddelsServer.getUserAccess();

var userExists = userAccess.exists(nick);

getAccessibleUserCount

() Number

Verfügbar ab Version AppServer 20200212-112449

Liefert die Anzahl der für diese App zugreifbaren User.

Rückgabewert:

Number:

die Anzahl der für diese App zugreifbaren User

Beispiel:

var accessibleUserCount = KnuddelsServer.getUserAccess().getAccessibleUserCount();

getNick

(
  • userId
)
String

Liefert den Nicknamen des Nutzers mit der übergebenen userId in der korrekten Schreibweise.

Parameter:

Rückgabewert:

String:

Korrekt geschriebener Nickname für den User der übergebenen userId

Beispiel:

var nick = 'sOmEaWeSoMeNiCk';

var userAccess = KnuddelsServer.getUserAccess();

if (userAccess.exists(nick))
{
    var userId = userAccess.getUserId(nick);
    
    if (userAccess.mayAccess(userId))
    {
        var user = userAccess.getUserById(userId);  // someAwesomeNick as user
    }
    else
    {
        var correctNick = userAccess.getNick(userId); // 'someAwesomeNick'
    }
}

getUserById

(
  • userId
)
User

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 mayAccess abzufragen, ob dies funktionieren wird.

Parameter:

Rückgabewert:

User:

User, der die übergebene userId besitzt

Beispiel:

var nick = 'someAwesomeNick';

var userAccess = KnuddelsServer.getUserAccess();

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

getUserId

(
  • nick
)
Number

Liefert die userId des Nutzers mit dem übergebenen Nicknamen. Wirft eine Exception, wenn der Nutzer nicht existiert, oder ein ungültiger Nick übergeben wurde (undefined, Leerstring, zu lang, etc.)

Parameter:

Rückgabewert:

Number:

userId des Users mit dem angegebenen Nick

Beispiel:

var nick = 'someAwesomeNick';

var userAccess = KnuddelsServer.getUserAccess();

if (userAccess.exists(nick))
{
    var userId = userAccess.getUserId(nick);
}

isUserDeleted

(
  • userId
)
Boolean

Informiert darüber, ob der Nutzer gelöscht wurde.

Parameter:

Rückgabewert:

Boolean:

true, falls der User mit dieser userId gelöscht wurde, false andernfalls (auch wenn er niemals existierte)

Beispiel:

var userId = 7543345;
var userAccess = KnuddelsServer.getUserAccess();
var userWasDeleted = userAccess.isDeleted(userId);

mayAccess

(
  • userId
)
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.

Parameter:

Rückgabewert:

Boolean:

true, falls der Nutzer mit getUserById geladen werden darf, false andernfalls

Beispiel:

var nick = 'someAwesomeNick';

var userAccess = KnuddelsServer.getUserAccess();

if (userAccess.exists(nick))
{
    var userId = userAccess.getUserId(nick);
    
    if (userAccess.mayAccess(userId))
    {
        // Der User ist zugreifbar...
    }
}