Der Discord-Bot geht auf Version 0.2.0. Zum Aktualisieren: Ersetze seinen Ordner durch den aus dem neuen Archiv,
behalte die Datei .env, führe npm ci --omit=dev aus und starte ihn dann neu. Lege anschließend unter
Verwaltung → Discord einen neuen Zugriffsschlüssel an — die Seite verlangt es — und ersetze den alten in .env: Ohne
ihn fehlen dem Bot die Berechtigungen des Bugtrackers. Die Einrichtung des Servers braucht außerdem die
Discord-Berechtigung „Kanäle verwalten“: Lade einen mit 1.2.11 eingeladenen Bot über die Schaltfläche „Bot einladen“
erneut ein, oder gib seiner Rolle diese Berechtigung in den Einstellungen des Servers.
Hinzugefügt
- Discord-Bot: Funktionen, die sich einzeln einschalten. Discord → Funktionen listet, was der Bot kann (er gibt es selbst an). Jede wird aus der Verwaltung ein- und ausgeschaltet und eingestellt; die Änderung gilt binnen einer Minute, ohne den Bot neu zu starten. Die Schaltfläche Neu synchronisieren bringt alles wieder in Einklang, und beim Start holt das Forum nach, was während der Abwesenheit des Bots auf Discord geschrieben wurde.
- Discord-Bot: Er holt die Website bei seiner Rückkehr ein. Was auf der Website geschrieben wird, während der Bot aus ist, geht bei seinem Neustart zu Discord, innerhalb der 30 Tage an Ereignissen, die die Website aufbewahrt. Bisher fing er beim neuesten Ereignis wieder an, und was in der Zwischenzeit geschrieben worden war, erreichte Discord nie.
- Discord-Bot: Einrichtung des Servers. Aus der Verwaltung legt der Bot auf Discord eine Kategorie an, einen Forum-Kanal pro gewähltem Forum (mit seinen Präfixen als Tags) und eine Rolle pro gewählter Gruppe, richtet die Zuordnungen selbst ein und verwendet wieder, was schon existiert, statt es zu duplizieren. Zuerst kommt eine Vorschau, und die letzte Einrichtung lässt sich rückgängig machen.
- Discord-Bot:
/forum./forum account linkgibt einen Einmal-Link, der dein Discord-Konto mit deinem Konto auf der Website verknüpft; du kannst auch wählen, das, was du von Discord aus veröffentlicht hattest, unter deinen Namen zu übernehmen./forum account unlinkhebt die Verknüpfung auf. Ohne verknüpftes Konto lässt/forum visibilitywählen, wie man im Forum erscheint: dein Discord-Benutzername, ein anonymer Name oder ein Benutzername deiner Wahl, der alle sieben Tage geändert werden kann — bereits veröffentlichte Nachrichten folgen. - Discord-Bot: Präfixe des Forums ↔ Tags des Forum-Kanals, in beide Richtungen: Ein Präfix an einem Thema setzt das Tag am Thread, und umgekehrt.
- Discord-Bot: der Bugtracker in einem Forum-Kanal (Funktion, die unter Discord → Funktionen einzuschalten ist).
Jedes Ticket wird zu einem Thread: Sein Typ und sein Status sind seine Tags, die der Bot im Kanal anlegt und aktuell
hält. Titel, Beschreibung und Priorität folgen; der Thread wird archiviert, wenn das Ticket geschlossen wird, und ein
Duplikat verweist auf sein Original-Ticket. Die Kommentare gehen in beide Richtungen. Von Discord aus öffnen
/bugund/ideeein Ticket über einen kleinen Dialog (Titel, Beschreibung), und ein von Hand im Kanal eröffneter Thread wird zu einem Ticket — für ein Mitglied, das sein Konto verknüpft hat. Noch offene Tickets erhalten ihren Thread, wenn der Kanal gewählt wird. Die Website ist maßgeblich: Ein auf Discord von Hand geändertes Tag wird auf das zurückgesetzt, was das Ticket sagt. - Discord-Bot: befristete Rollen (einzuschaltende Funktion). Der Befehl
/role, denen vorbehalten, die Rollen verwalten können, gibt einem Mitglied eine Rolle für eine festgelegte Zeit (eine Sanktion, ein Probezugang, eine Rolle für ein Ereignis), entfernt sie oder zeigt die laufenden. Der Bot entfernt sie bei Ablauf, auch nach einem Neustart, und gibt sie einem Mitglied zurück, das den Server verlässt und wieder beitritt, um ihr zu entgehen. Rollen, die mit einer Gruppe der Website verknüpft sind, von Discord verwaltete Rollen und Rollen auf oder über der höchsten Rolle des Bots oder dessen, der sie vergibt, werden abgelehnt. Die Seite Discord → Befristete Rollen listet sie auf, mit „Jetzt entfernen“. - API: zwei neue Berechtigungen, „Den Bugtracker lesen“ (
bugtracker:read) und „In den Bugtracker schreiben“ (bugtracker:write). Sie lassen ein Programm Tickets lesen (GET bugtracker/tickets, nur die offenen mitopen=1) und ihre Kommentare, ein Ticket im Namen eines Mitglieds öffnen, es im Namen eines Mitglieds oder eines Discord-Kontos kommentieren und diese Kommentare bearbeiten oder löschen. Das Präfix eines Forenthemas lässt sich ebenfalls über die API ändern (PATCH forum/topics/{id}). Der Bot erhält die Endpunktediscord/*seiner neuen Funktionen: befristete Rollen (discord/timed-roles), Einrichtung des Servers, Verknüpfung von Konten.
Sicherheit
- Ein über die API geschriebener Titel kann keinen Code mehr in die Seiten der Website einschleusen. Der Titel eines über die API angelegten Themas — zum Beispiel der Name eines vom Bot kopierten Discord-Threads — wurde unverändert gespeichert, während das Forum seine Titel anzeigt, ohne sie neu zu kodieren: Ein HTML-Tag in diesem Titel wurde auf der Seite des Forums ausgeführt. Die API speichert ihre Texte jetzt so, wie die Website ihre eigenen speichert, und der Titel des Reiters wird immer kodiert.
Behoben
- Die Akzente im Bugtracker wurden auf der Seite eines über das Formular geöffneten Tickets als
réagitangezeigt, und die Suche „Schon gemeldet?“ fand kein Wort mit Akzent. Die Texte, die die API zurückgibt — Benutzernamen, Titel, Beschreibungen, Kommentare —, sind ebenfalls Klartext: Der Discord-Bot kopierte sie kodiert. Die Vorschauen beim Teilen von Links (Discord eingeschlossen) zeigen ihre Akzente nicht mehr als HTML-Code. - Bugtracker: Den Status „Duplikat“ ohne gültige Ticketnummer zu wählen behielt den alten Status, während „Ticket aktualisiert“ angekündigt wurde; die Meldung sagt jetzt, was nicht angewendet wurde.
- Discord-Bot: Das Löschen der Kopie einer Nachricht der Website auf Discord löscht das Original nicht mehr. Wenn der Bot diese Nachricht nicht mehr im Speicher hatte (nach einem Neustart), löschte das Löschen der Kopie einer Nachricht, die ein Mitglied mit verknüpftem Konto auf der Website geschrieben hatte, auf Discord auch die Nachricht auf der Website. In diesem Fall löscht der Bot auf der Website jetzt nur noch die Nachrichten, die von Discord kamen.
- Das Wiki: Auf der Startseite des Wikis erschien eine Seite der obersten Ebene ohne Unterseiten als leerer Bereich; sie zeigt jetzt ihre ersten Abschnitte (oder den Anfang ihres Textes) und einen Link, um sie zu lesen, und die Seitenleiste macht einen Link daraus.
- Nicht gefundene und verbotene Seiten sind keine leeren Seiten mehr. Auf allen öffentlichen Themes zeigten eine Adresse, die nirgendwohin führt (404), oder eine eingeschränkte Seite (403) nur den Kopf und die Fußzeile, ohne ein Wort — ein von NeoFrag geerbter Fehler. Sie sagen jetzt, was los ist, in allen sechs Sprachen, mit einer Schaltfläche zurück zur Startseite (zum Dashboard in der Verwaltung), und der Reiter des Browsers zeigt „Seite nicht gefunden“ oder „Unbefugter Zugriff“ statt des Modulnamens.