TwasiDocs

TwasiDocs

  • Developers
  • Users
  • Changelogs
  • Blog
  • Languages iconDeutsch
    • English

›Getting started

Welcome

  • Home

Core concepts

  • Das Twasi-Plugin
  • Der Twasi-Command
  • Die Twasi-Variable

Getting started

  • Lokale Installation von Twasi
  • Plugin Grundlage
  • Plugin Befehle
  • Plugin Übersetzungen
  • Plugin Variablen
  • Plugin Berechtigungen

Variablen einem Twasi-Plugin hinzufügen

Das Hinzufügen dynamischer Variablen zu deinem Plugin ist sehr einfach! Der beste Weg, um zu erklären, wie es funktioniert, ist ein einfaches Beispiel.

Erstellen einer Variablen Controller-Klasse

Wir werden eine Variable hinzufügen, die die aktuelle Zeit zurückgibt. Wir werden auch ein Argument verwenden, um dem Benutzer die Angabe eines benutzerdefinierten Formats zu ermöglichen.

Lass uns beginnen, eine neue Klasse namens TimeVariable zu erstellen.

Wenn du mehrere Variablen hast, ist es eine gute Praxis, sie in ein Paket namens "Variablen" oder ähnliches zu packen, um alles sauber zu halten.

package de.merlinw.variables;

import net.twasi.core.interfaces.api.TwasiInterface;
import net.twasi.core.models.Message.TwasiMessage;
import net.twasi.core.plugin.api.TwasiUserPlugin;
import net.twasi.core.plugin.api.TwasiVariable;

import java.util.Arrays;
import java.util.List;

public class TimeVariable extends TwasiVariable {

    public TimeVariable(TwasiUserPlugin owner) {
        super(owner);
    }

    @Override
    public String process(String name, TwasiInterface inf, String[] params, TwasiMessage message) {
        // This function is used to resolve the variable
    }

    @Override
    public List<String> getNames() {
        return Arrays.asList("time", "timestamp");
    }
}

Es gibt zwei sehr wichtige Funktionen, die du überschreiben musst:

  • Die erste ist die process-Funktion, die aufgerufen wird, wenn Twasi eine Nachricht mit einer Variable sendet, die aufgelöst werden muss. Der Rückgabetyp ist ein String. Twasi wird die Variable durch das ersetzen, was du hier zurückgibst. Es hat vier Parameter:

    • 'String name' ist der verwendete Variablenname (da Variablen mehrere Namen/Aliase haben können).
    • 'TwasiInterface inf' ist die TwasiInterface des Benutzers, in dessen Kanal die Variable verwendet wird.
    • 'String[] params' enthält alle Argumente/Parameter, die am Ende des Variablennames in den Klammern angegeben wurden (wird leer sein, wenn es überhaupt keine Klammern gibt).
    • 'TwasiMessage message' ist die TwasiMessage, auf die wir derzeit antworten.
  • Die zweite ist die getNames-Funktion, die jeden Namen zurückgibt, den die Variable haben sollte. Der erste String in der Ausgabeliste ist der Hauptname deiner Variable, der in Variablenlisten angezeigt wird. Alle anderen Strings sind Aliase, die ebenfalls verwendet werden können, aber nicht aufgelistet werden.

Nun wollen wir unserer process-Funktion etwas Logik hinzufügen:

    @Override
    public String process(String name, TwasiInterface inf, String[] params, TwasiMessage message) {
        SimpleDateFormat hourFormat = new SimpleDateFormat("HH:mm");
        return hourFormat.format(Calendar.getInstance().getTime());
    }

Jetzt gibt unsere Variable die aktuelle Zeit zurück. Fügen wir einen Parameter hinzu:

    @Override
    public String process(String name, TwasiInterface inf, String[] params, TwasiMessage message) {
        String format = (params.length > 0 ? params[0] : "HH:mm");
        SimpleDateFormat hourFormat = new SimpleDateFormat(format);
        return hourFormat.format(Calendar.getInstance().getTime());
    }

Wenn ein Parameter angegeben ist, wird der Datumsparser ihn anstelle von 'HH:mm' verwenden.

Fehlerbehandlung

In den meisten Fällen musst du dich nicht um Fehlerbehandlung kümmern. Wenn deine process-Funktion eine Ausnahme erzeugt, löst Twasi die Variable automatisch mit 'ERROR' auf. Wenn die Ausnahme eine ArrayIndexOutOfBoundsException ist, wird Twasi 'INSUFFICIENT_PARAMETERS' zurückgeben.

Natürlich kannst du eine benutzerdefinierte Fehlerbehandlung implementieren, um nützlichere Fehlermeldungen zu erhalten:

    @Override
    public String process(String name, TwasiInterface inf, String[] params, TwasiMessage message) {
        String format = (params.length > 0 ? params[0] : "HH:mm");
        SimpleDateFormat hourFormat = new SimpleDateFormat(format);
        try {
            return hourFormat.format(Calendar.getInstance().getTime());
        } catch (Exception e) {
            return "INVALID_FORMAT";
        }
    }

Registrieren von Variablen

Der letzte Schritt ist es, den Variablenkontroller - wie die Befehle in der TwasiUserPlugin-Klasse deines Plugins - zu registrieren:

    public ExampleUserPlugin() {
        // Register commands
        registerCommand(ExampleCommand.class);
        registerCommand(ExampleStructuredCommand.class);

        // Register variables
        registerVariable(TimeVariable.class);
    }

Wenn Sie die Signatur deines Variable-Controller-Klassen-Konstruktors geändert hast, wirft die obige Syntax einen Fehler auf. Du kannst diese Syntax stattdessen verwenden:

    registerVariable(new TimeVariable(this, otherParameters));

Fortfahren

Im nächsten Teil der "Getting started" Serie erfährst du, wie du Berechtigungen in deinem Plugin verwenden kannst!

← Plugin ÜbersetzungenPlugin Berechtigungen →
  • Erstellen einer Variablen Controller-Klasse
  • Fehlerbehandlung
  • Registrieren von Variablen
  • Fortfahren
TwasiDocs
Docs
User DocumentationDeveloper DocumentationAPI Reference
Community
DiscordTwitter
More
BlogGitHub
Legals
PrivacyTerms of UseImprint
Copyright © 2019 Twasi | Twasi.NET | Docs.Twasi.NET