From eb1bb16d7b805b3e657ddc1e3a8b0709c7e8b0e5 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 18 Jul 2022 14:17:49 +0200 Subject: [PATCH] Added docs --- Befehle.md | 3 + Entwicklung.md | 314 +++++++++++++++++++++++++++++++++++++++++++++++++ Issues.md | 107 +++++++++++++++++ Mitarbeit.md | 65 ++++++++++ Startseite.md | 21 ++++ Team.md | 29 +++++ 6 files changed, 539 insertions(+) create mode 100644 Befehle.md create mode 100644 Entwicklung.md create mode 100644 Issues.md create mode 100644 Mitarbeit.md create mode 100644 Startseite.md create mode 100644 Team.md diff --git a/Befehle.md b/Befehle.md new file mode 100644 index 0000000..6bfa8b6 --- /dev/null +++ b/Befehle.md @@ -0,0 +1,3 @@ +# Befehle + +Noch sind keine Befehle vorhanden. diff --git a/Entwicklung.md b/Entwicklung.md new file mode 100644 index 0000000..fa8df06 --- /dev/null +++ b/Entwicklung.md @@ -0,0 +1,314 @@ +# Entwicklung + +1. [Einrichtung](#einrichtung) + * [VS Code](#vs-code) +2. [Bot Einstellungen](#bot-einstellungen) +3. [Versionierung](#versionierung) +4. [Branches](#branches) +5. [Pull Requests](#pull-requests) + +## Einrichtung + +Generelle werden folgende abhängigkeiten benötigt: + +* [Python][python] +* [Pip][pip] + +Nach der Installation von Python und Pip können wir nun das Projekt einrichten. +Dazu öffnen Sie bitte ein Terminal ein und navigieren mit dem Befehl ```cd``` zu einem Ordner, in dem Sie das Projekt ablegen wollen. + +Nachdem Sie dies gemacht haben, holen Sie sich die Projekt Dateien mit folgendem Befehl: + +```sh +git clone https://git.sh-edraft.de/sh-edraft.de/kd_discord_bot.git +``` + +Nun müssen Sie in den Ordner des Projektes gehen. + +```sh +cd kd_discord_bot +``` + +Um zu testen, ob Sie alles richtig eingerichtet haben, können Sie den folgenden Befehl Ausführen. +Dieser sollte einen Ordner ```dist``` erstellen. + +```sh +cpl build +``` + +Als nächstes erstellen und aktivieren Sie ein VirtualEnv von Python: + +```sh +# erstellen: +python -m venv venv +# aktivieren: +# linux: +source venv/bin/activate +# windows: +.\venv\Scripts\activate +``` + +Nachdem das venv nun erstellt wurde, benötigen noch die [CPL](https://git.sh-edraft.de/sh-edraft.de/sh_cpl). +Diese Installieren Sie in der Virtuellen Umbebung nach dieser [Anleitung](https://docs.sh-edraft.de/cpl/setup.html#install-the-package). + +Führen Sie den Befehl ```cpl v``` aus, um zu sehen ob alles richtig installiert wurde. +Wenn der Befehl bei ihnen lief, können Sie nun weitere Pakete des Bot installieren. + +```sh +cpl install +``` + +Der Befehl installiert alle Abhängikeiten, die in der Projektdatei angegeben sind. + +Nach der Installation starten Sie den Bot: + +```sh +cpl start +# Wenn Sie Entwickeln wollen: +cpl dev +# Wenn Sie Testen wollen: +cpl test +# Wenn Sie im Production Modus testen wollen: +cpl prod +``` + +Nun richten Sie die IDE ein, die Sie verwenden wollen. + +### VS Code + +Um adequat mit Python arbeiten zu können benötigen Sie ein paar Extensions: + +* [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) +* [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) +* [Python Docstring Generator](https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring) +* [Python Test Explorer for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=LittleFoxTeam.vscode-python-test-adapter) +* [python-snippets](https://marketplace.visualstudio.com/items?itemName=cstrap.python-snippets) +* [Importmagic](https://marketplace.visualstudio.com/items?itemName=brainfit.vscode-importmagic) + +Sie sollten für ```Importmagic``` ein Keyboard Shortcut anlegen: + +```text +ImportMagic: Resolve Import -> Alt+Enter +``` + +VS Code sollten Sie dann einmal neustarten und die Entwicklung kann ab dann losgehen. + +## Bot Einstellungen + +Nachdem Sie nun das Projekt auf ihren PC Kopiert haben und alle Schritte bfolgt haben, sollten Sie folgende Ordnerstrucktur vorfinden: + +```text +kd_discord_bot/ + dist/ + src/ + bot/ + bot_cli/ + bot_core/ + bot_data/ + modules/ + tools/ + venv/ + .gitignore + cpl-workspace.json + LICENSE + README.md +``` + +In den Ordner ```src/bot/``` müssen die Einstellungen in den Dateien Appsettings gespeichert werden. +Sie sollten nur die Datei ```appsettings.json``` sehen, in dieser Datei können Sie ihre Einstellungen auch vornehmen dies ist jedoch nicht zu Empfehlen. + +Sie sollten eine Datei erstellen, die anstatt des Platzhalters ihren Rechnernamen oder die Umbebung in der Sie arbeiten enthalten. +Beispiele: + +```text +Umgebung: + appsettings.production.json + appsettings.staging.json + appsettings.development.json + +Rechnername: + appsettings.MEIN-PC.json + +Standard: + appsettings.json +``` + +Sie können folgenden Inhalt in die Datei Kopieren, Sie müssen unbedingt die fehlenden Werte eintragen!: + +```json +{ + "DatabaseSettings": { + "Host": "", + "User": "", + "Password": "", + "Database": "", + "Charset": "utf8mb4", + "UseUnicode": "true", + "Buffered": "true", + "AuthPlugin": "mysql_native_password" + }, + "Discord": { + "Token": "" + }, + "Bot": { + "Prefix": "", + "Servers": [ + { + "Id": "", + "LoginMessageChannelId": "", + "LoginMessage": "", + "MessageDeleteTimer": 2 + } + ] + } +} +``` + +## Versionierung + +Major.Minor.Micro + +Major wird nur geändert, wenn der neue Stand nicht Kompatibel mit dem alten Stand ist. +Minor wird bei jeder neuen Funktion erhöht. +Micro wird bei kleinen Änderungen oder Patches erhöht. + +Es werden Folgende Versionen vorgesehen: + +Bis Ende der Alpha: ```0.SprintNummer.StoryNummer``` +Ab Ende der Alpha Entwicklung: ```1.SprintNummer.StoryNummer.aN``` +Ab Beginn der Beta: ```1.SprintNummer.StoryNummer.bN``` +Ab Ende der Beta: ```Major.SprintNummer.StoryNummer``` + +### Stories + +Jede Story bekommt eine Version, anhand der sie auch Identifierzeit werden kann. +Es wird während der Entwicklungsphase eine Kennung mit dem Stadium angehangen. +Sobald das MVP (Minimum Viable Product, Minimum Viable Product ist die einfachste Konfiguration eines Produkts, die ein Benutzer testen und bewerten kann) bereitsteht, wird die Entwicklungsphase verlassen und ein Release 1.0 erstellt. +Ab dem Zeitpunkt fallen die Prefixe für Stories weg. + +Stadien: + +* Alpha +* Beta + +Bsp.: + +```text +A-0.6.1 - Beschreibung +B-0.13.4 - Beschreibung +1.0.2 - Beschreibung +``` + +### Developmental releases + +Für Versionen die sich noch in der Entwicklung befinden, jedoch schonmal gebaut werden müssen, wird ein ```devN``` angehangen. + +Bsp.: + +```text +1.2.3.dev1 +1.2.3.dev2 +1.2.3.dev3 +``` + +### Pre-releases + +Alpha und Beta Versionen werden durch ein ```a|bN``` markiert. + +Für Versionen, die getestet werden müssen, wird ein ```rcN``` angehangen. +Wenn Fehler aufreten, werden diese im Rahmen des nächsten rc gefixed. Es wird darauf verzichtet andere Versionsänderungen vorzunehmen. + +Bsp.: + +```text +1.0.1.a1 +1.0.2.a1 +1.0.2.a2 +1.1.1.b1 +1.1.2.b1 +1.1.2.b2 +1.2.0.rc1 +1.2.0.rc2 +1.2.0.rc3 +``` + +### Post-releases + +Für Änderungen, die kleinere Fehler beheben, jedoch keinen weiteren Einfluss auf das Produkt haben wird ein ```postN``` angehangen. + +## Branches + +Alle Änderungen am Code werden auf externen Branches zum ```master``` bearbeitet. +Es wird für jeden Sprint ein Branch erstellt. +Es wird für jede Story ein Branch erstellt, sobald diese bearbeitet wird (nicht vorher!). Dieser Branch basiert auf den Branch des Sprints. + +Minor Stories also Stories, dessen Version aus zwei ziffen besteht bekommen ebenfalls ein Branch. +Micro Stories die auf der Minor Story basieren werden von de, Branch der Minor Story abgewandelt. + +Bevor die Minor Story wieder auf den Branch des Sprints geführt werden kann, MÜSSEN alle Micro Stories beendet und in den Branch der Micro Story eingefügt sein! + +Nach bearbeitung einer Story wird ein [Pull Request](#pull-requests) erstellt. Dieser beantragt das Einfügen der Story in den Sprint. + +Das ganze sollte dann so aussehen: + +* Sprint: Alpha +* Minor Story: A-0.10 +* Micro Story: A-0.10.1 + +```text +master +| +\ +|\ +| \ +| \ +| Alpha +| | +| \ +| |\ +| | \ +| | \ +| | A-0.10 +| | | +| | \ +| | |\ +| | | \ +| | | \ +| | | A-0.10.1 +| | | | +| | | / +| | | / +| | | / +| | |/ +| | / +| | | +| | / +| | / +| | / +| |/ +| / +| | +| / +| / +| / +|/ +/ +| +``` + +## Pull Requests + +Pull Requests werden erstellt, wenn ein Branch in einen anderen eingefügt werden kann. + +Die Pull Requests finden Sie [hier][pr]. + +Pull Requests werden erst überprüft. Dazu setzt sich ein Erfahrener Entwickler mit dem Entwickler des Branches zusammen und geht alle Änderungen durch. +Dabei werden letzte Änderungen vorschlagen, damit z.B. Toter Code nicht weiter übermittelt wird. +Sobald das Code Review Erfolgreich war, werden die Branches gemerged. +Danach wird der Branch gelöscht welcher gemerged wurde. + + +[pip-url]: https://pip.sh-edraft.de +[python]: https://www.python.org/ +[pip]: https://pypi.org/project/pip/ +[pr]: https://git.sh-edraft.de/sh-edraft.de/kd_discord_bot/pulls diff --git a/Issues.md b/Issues.md new file mode 100644 index 0000000..e02668b --- /dev/null +++ b/Issues.md @@ -0,0 +1,107 @@ +# Fehler & Funktionen + +- [Fehler melden](#fehler-melden) +- [Neue Funktion vorschlagen](#neue-funktion-vorschlagen) + - [Befehl](#befehl) + - [Modul](#modul) + +## Fehler melden + +Um einen Fehler zu melden, müssen Sie [hier](new-issue) klicken. + +Dazu sollten Sie folgendes beachten: + +Alle Einträge sollten mit Markdown Formatiert sein. Dazu bieten wir im Folgenden Text auch verschiedene Beispiele: [Befehle](#befehle), [Module](#module). + +Ein issue sollte immer eine Funktion aus Sicht des Benutzers beschreiben. Bsp.: + +```text +Ein Benutzer soll sich an dem Portal anmelden können. +Dabei werden E-Mail und Passwort abgefragt. +``` + +Fehler sollten hingegen möglichst genau beschrieben sein. Bsp.: + +```text +Der Befehl ```!get xp``` gibt nicht den richtigen Wert zurück. +Ich bekomme immer ca. 30 xp weniger angezeigt als ich eigentlich habe. +Zu diesem Zeitpunkt müsste ich 42 xp haben, jedoch werden mir nur 12 angezeigt. +Ich komme darauf, dass ich ca. 42 haben müsste, da ich das entsprechende Level habe. +``` + +Der Text sieht dann durch Markdown so aus: + +Der Befehl ```!get xp``` gibt nicht den richtigen Wert zurück. +Ich bekomme immer ca. 30 xp weniger angezeigt als ich eigentlich habe. + +## Neue Funktion vorschlagen + +Sie sollten beim Vorschlagen neuer Funktionen die Beispiele ([Befehle](#befehle), [Module](#module)) verwenden! + +Ein Modul ist eine zusammenfassungen von Funktionen und Befehlen innerhalb eines Themas, z.B. Ein ```Verwarnungssystem```. + +Wenn Sie eine einfache neue Funktion haben wollen, jedoch keine Befehle oder ein Modul zuordnen können, können Sie in einem einfachen Text verfassen, was Sie sich unter der neuen Funktion vorstellen. Wir kümmern uns um den Rest. + +### Befehl + +Kopieren Sie dies Beispiel und tragen Sie unter den Überschriften die zutreffenden Begriffe ein. +Entfernen Sie die Begriffe, die nicht zutreffen! + +```text +##### Befehl: + +!g befehl + +##### Parameter: + +* parameter (type) + +##### Reaktion: + +Beschreibung der Reaktion + +##### Berechtigungen: + +* Admin +* Moderator +* Keine + +##### Neue Daten zum Speichern: + +* Keine + +##### Aufwand: + +Gering +Mittel +Hoch +sehr hoch +``` + +### Modul + +Kopieren Sie dies Beispiel und tragen Sie unter den Überschriften die zutreffenden Begriffe ein. +Entfernen Sie die Begriffe, die nicht zutreffen! + +```text +##### Beschreibung: + +Beschreibung des Moduls bzw. Erklärung und Auflistung der Funktionen. + +##### Befehle: + +* befehl parameter + +##### Neue Daten zum Speichern: + +* Keine + +##### Aufwand: + +Gering +Mittel +Hoch +sehr hoch +``` + +[new-issue]: https://git.sh-edraft.de/sh-edraft.de/kd_discord_bot/issues/new diff --git a/Mitarbeit.md b/Mitarbeit.md new file mode 100644 index 0000000..6971ddb --- /dev/null +++ b/Mitarbeit.md @@ -0,0 +1,65 @@ +# Mitarbeit + +1. [Ablauf](#ablauf) +2. [Projektaufbau](#projektaufbau) +3. [Meetings](#meetings) + * [Wöchentlich](#wöchentliche-besprechung) + * [Monatlich](#monatliche-besprechung) +4. [Entwicklung](Entwicklung) +5. [Tests](#tests) + +## Ablauf + +Jedes mal, wenn Sie am Projekt arbeiten, müssen Sie die Arbeitszeiten [hier](clockify) eintragen. + +Dabei wählen Sie immer das Projekt ```kd_discord_bot``` und die Aufgabe an die Sie arbeiten. +In der Beschreibung beschreiben kurz und genau woran Sie arbeiten. + +## Projektaufbau + +Der Bot wird in Sprints entwickelt. Jeder Sprint beinhaltet festgelegte Issues, welche bearbeitet werden müssen. +Vor einem Sprint wird genau geplant welche Issues das sind und ggf. werden diese durch weitere Issues ergänzt. + +[Hier](Issues) wird erklärt wie Sie Issues erstellen. + +Der Sprint besteht aus einem [Meilenstein](milestone) und einem [Projekt](project). Issues werden dem Sprint bei Meilenstein & Projekt zugewiesen. +Jedes Issues muss angemessen Sortiert werden, dazu werden entsprechende Tags vergeben. + +Am Ende eines Sprints muss eine Besprechung mit dem gesamten Team stattfinden, um letzte Probleme und Fragen zu besprechen. + +## Meetings + +Meetings werden vom [Scrum Master](Team#leitung) geplant und Umgesetzt. + +Die Besprechungen finden [hier](talk) statt + +### Wöchentliche Besprechung + +Einmal in der Woche sollte ein Meeting stattfinden. + +Es können alle Teammitglieder an diesem Meeting teilnehmen. + +In diesem Meeting muss von allen Teilnehmern angesprochen werden, was man in der Woche erreicht hat, wo man Fragen hat und ob man Probleme hat. + +Das Meeting darf jedoch nicht länger als ca. 15 gehen, 20 Minuten wäre so ziemlich die Obergrenze. +Der Scrum Master bestimmt die Reihenfolge in denen die Teilnehmer sprechen. + +### Monatliche Besprechung + +Einmal im Monat sollte eine Besprechung stattfinden. + +An dieser Besprechung können alle Teilnehmen, die Leitung ist hingegen dazu verpflichtet. + +Teil dieser Besprechung ist es der Stand des Projektes angesichts des laufenden Sprints. Es muss besprochen werden, ob die Stories angemessen aufgebaut sind und ob es angemessen Fortschritt gibt. +Ebenso wird über neue Isssues Diskutiert um einen laufenden Prozess zu schaffen, in dem auch zukünfitge Sprint vorbereitet werden. +Issues, die schonmal für die nächsten Sprint geplant werden bekommen den Tag ```next-version```. + +## Tests + +Inhalte kommen bald. + + +[clockify]: https://clockify.me/tracker +[milestone]: https://git.sh-edraft.de/sh-edraft.de/kd_discord_bot/milestones +[project]: https://git.sh-edraft.de/sh-edraft.de/kd_discord_bot/projects +[talk]: https://cloud.sh-edraft.de/index.php/call/iqa9afxf diff --git a/Startseite.md b/Startseite.md new file mode 100644 index 0000000..5d08ce9 --- /dev/null +++ b/Startseite.md @@ -0,0 +1,21 @@ +# Keksdose Discord Bot + +Dies ist ein Discord Bot, welcher die Verwaltung des Servers ```Keksdose``` übernimmt. + +Dabei bietet er viele Funktionen: + +* Modularer Aufbau +* Auswertung der Ontime +* Levelsystem +* Verwarnungen +* Verschiedene Befehle + +## Erkunden + +* [Startseite](Startseite) +* [Fehler melden](Issues#fehler-melden) +* [Neue Funktion vorschlagen](Issues#neue-funktion-vorschlagen) +* [Team](Team) +* [Mitarbeiten](Mitarbeit) +* [Befehle](Befehle) +* [Einstieg in die Entwicklung](Entwicklung) diff --git a/Team.md b/Team.md new file mode 100644 index 0000000..537c75c --- /dev/null +++ b/Team.md @@ -0,0 +1,29 @@ +# Das Team + +* [Leitung](leitung) +* [Entwicklung](leitung) +* [Test](leitung) + +## Leitung + +* Projektleiter + * Nicht vergeben +* Scrum Master + * [Craft_Mac](https://git.sh-edraft.de/CraftMac) +* Berater + * [DaosYeager](https://git.sh-edraft.de/DaosYeager) + +## Entwicklung + +* Leitender Entwickler + * [edraft](https://git.sh-edraft.de/edraft) +* Entwickler + * [bianyx](https://git.sh-edraft.de/bianyx) + +## Test + +* Leitender Tester + * Nicht vergeben +* Tester + * [Kükchen](https://git.sh-edraft.de/mary) + * [Momo](https://git.sh-edraft.de/momo)