Telegram Bot, der täglich neue verrückte Produkte von Amazon postet, User müssen den Preis im Laufe des Tages erraten. Am Ende des Tages bekommt der User der am besten geraten hat Punkte, über den Lauf der Zeit kann man Punkte sammeln und in der Rangliste
Go to file
Florian Kaiser e7461c66c7
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Merge pull request 'Update dependency selenium to ~=4.5.0' (#40) from renovate/selenium-4.x into main
Reviewed-on: #40
2022-10-06 10:27:09 +02:00
docs Updated Dockerfile and documentation 2022-05-03 11:30:19 +02:00
source sending commands that are almost matching if user has a typo 2022-06-03 16:02:12 +02:00
.gitignore nvm, did it wrong. Working now 2022-05-27 23:04:04 +02:00
.re Maybe this fixes renovate 2022-09-17 23:33:30 +02:00
.woodpecker.yml Some changes 2022-09-17 23:23:21 +02:00
LICENSE Initial commit 2022-05-02 16:23:35 +02:00
README.md Some changes 2022-09-17 23:23:21 +02:00
renovate.json Add renovate.json 2022-09-17 23:33:28 +02:00
requirements.txt Update dependency selenium to ~=4.5.0 2022-09-28 22:19:39 +02:00

GuessThePrice

Telegram Bot, der täglich neue verrückte Produkte von Amazon postet, User müssen den Preis im Laufe des Tages erraten. Am Ende des Tages bekommt der User der am besten geraten hat Punkte, über den Lauf der Zeit kann man Punkte sammeln und in der Rangliste aufsteigen.

Kriterien

Bewertungskriterien: 95% = 1,0 --- 50% = 4,0

(25%) - Dokumentation des vorhandenen Codes --- Modulbeschreibung, Funktionsbeschreibung, Klassenbeschreibung

(15%) - Testbeschreibung --- vollständig und sinnvoll (Testvarianz)

(20%) - Python Spezifika --- Verwendung von Python spezifische Programmierfunktionalitäten und Modulen

(20%) - Reaktion und Performance der Applikation

(20%) - UI Frontend und Usability Bedienbarkeit der APP Ausgabe

(05%) - Bonus für besondere Kreativität

Umsetzung:

  • freies Thema angemeldet beim Dozenten und genehmigt (oder genehmigt mit Auflage)
  • Datenspeicherung
  • Datenvisualisierung
  • klare Trennung der Aufgaben in Skripten (z.B. Klassen aufgabenspezifisch)
  • bei Bots: Anleitung zur Implementierung und Tests
  • Logfile mit sinvollen Ausgaben um Programmablauf nachvollziehen zu können
  • externe Quellen eindeutig Kennzeichnen als solche an Code und Stelle

Oberthema: "Data is the new oil"

Deploy

Mit Docker (Empfohlen)

docker-compose.yml:

version: '3.7'

services:
  bot:
    image: registry.flokaiser.com/dhbw/guesstheprice
    env_file:
      - ${PWD}/.env

Start with:

docker-compose --env-file .env up -d

Ohne Docker

Da für das Laden der Produkte von Amazon Gecko, Firefox und andere Abhängigkeiten verwenden, ist es relativ komplex den Bot ohne Docker zu Starten. Im Docker-Image sind alle Abhängigkeiten direkt integriert, ohne Docker müssen unter Linux einige Librarys heruntergeladen werden. Unter Windows wurde die Nutzung ohne Docker nie getestet.

Windows

  1. Virtuelles Environment erstellen python -m venv venv
  2. venv starten: .\venv\Scripts\activate
  3. Abhängigkeiten installieren pip install -r requirements.txt
  4. Umgebungsvariablen setzen
    1. Erstelle die .env-Datei anhand der .env.example
    2. Alternativ die Variablen mit dem set Befehl setzen.
  5. Bot Skripte starten python source/bot.py & python source/daily_challenge.py

Linux / MacOS

  1. Virtuelles Environment erstellen python -m venv venv
  2. venv starten: source venv/bin/activate
  3. Abhängigkeiten installieren pip install -r requirements.txt
  4. Umgebungsvariablen setzen
    1. Erstelle das .env-file anhand der .env.example
    2. Alternativ die Variablen mit dem export Befehl setzen.
  5. Bot Skripte starten python source/bot.py & python source/daily_challenge.py

CI-CD

Damit der Docker Container bei jeder Änderung neu gebaut und gestartet wird, wird bei diesem Projekt Woodpecker verwendet: https://gitea.woodpecker.flokaiser.com/DHBW/GuessThePrice. Die Konfiguration hierzu befindet sich im .woodpecker-Ordner

Um die Abhängigkeiten aktuell zu halten wird der dependabot-Service von Github verwendet. Der Bot erstellt dabei täglich (bei neuen Updates) Pull Requests, die nur noch getestet und gemerged werden müssen.