diff --git a/Dockerfiles/Dockerfile b/Dockerfiles/Dockerfile deleted file mode 100644 index 9b5bfc3..0000000 --- a/Dockerfiles/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM python:3.10 - -WORKDIR /app - -COPY requirements.txt . - -RUN pip3 install -r requirements.txt - -COPY code /app - -ENTRYPOINT [ "python", "wingl.py" ] diff --git a/Dockerfiles/api/Dockerfile b/Dockerfiles/api/Dockerfile new file mode 100644 index 0000000..9165d45 --- /dev/null +++ b/Dockerfiles/api/Dockerfile @@ -0,0 +1,13 @@ +FROM python:3.10-slim + +WORKDIR /app + +COPY requirements_api.txt . + +RUN pip3 install -r requirements_api.txt + +COPY code /app + +ENTRYPOINT ["gunicorn", "api:app", "--workers", "4", "--worker-class", "uvicorn.workers.UvicornWorker", "--bind", "0.0.0.0:8000"] + +EXPOSE 8000 diff --git a/Dockerfiles/bot/Dockerfile b/Dockerfiles/bot/Dockerfile new file mode 100644 index 0000000..6e0baf3 --- /dev/null +++ b/Dockerfiles/bot/Dockerfile @@ -0,0 +1,11 @@ +FROM python:3.10-slim + +WORKDIR /app + +COPY requirements_bot.txt . + +RUN pip3 install -r requirements_bot.txt + +COPY code /app + +ENTRYPOINT [ "python", "bot.py" ] diff --git a/code/__pycache__/api.cpython-39.pyc b/code/__pycache__/api.cpython-39.pyc new file mode 100644 index 0000000..20f0a56 Binary files /dev/null and b/code/__pycache__/api.cpython-39.pyc differ diff --git a/code/__pycache__/wingl.cpython-39.pyc b/code/__pycache__/wingl.cpython-39.pyc new file mode 100644 index 0000000..ea9d4fc Binary files /dev/null and b/code/__pycache__/wingl.cpython-39.pyc differ diff --git a/code/api.py b/code/api.py new file mode 100644 index 0000000..8900886 --- /dev/null +++ b/code/api.py @@ -0,0 +1,20 @@ +from typing import Union +from fastapi import FastAPI +from module.rainer_board import rainerSpruche +import configparser + +config = configparser.ConfigParser() +config.read('config.ini') + +spruchDatei = config.get('GENERAL','spruchDatei') +nameDatei = config.get('GENERAL', 'nameDatei') + +app = FastAPI() + +@app.get("/") +def getSpruch(): + rainer = rainerSpruche(spruchDatei, nameDatei) + spruch = rainer.randomSpruch() + name = rainer.randomName() + print("**DEBUG** " + name + ": " + spruch) + return {"name": name , "spruch": spruch} \ No newline at end of file diff --git a/code/wingl.py b/code/bot.py similarity index 75% rename from code/wingl.py rename to code/bot.py index 30704d9..a590133 100644 --- a/code/wingl.py +++ b/code/bot.py @@ -8,14 +8,13 @@ config = configparser.ConfigParser() config.read('config.ini') spruchDatei = config.get('GENERAL','spruchDatei') +nameDatei = config.get('GENERAL', 'nameDatei') botToken = config.get('BOT','token') bot = lightbulb.BotApp( token=botToken ) - - @bot.listen(hikari.StartedEvent) async def onStarted(event): print('Der Bot wurde gestartet!') @@ -28,7 +27,9 @@ async def onStopped(event): @lightbulb.command('haider', 'Meddld nen krassen Spruch raus etzadla!') @lightbulb.implements(lightbulb.SlashCommand) async def haider(ctx): - spruch = rainerSpruche(spruchDatei) - await ctx.respond(spruch.randomSpruch()) + rainer = rainerSpruche(spruchDatei, nameDatei) + spruch = rainer.randomSpruch() + name = rainer.randomName() + await ctx.respond(name + ' sagt: ' + '\n' + spruch) bot.run() \ No newline at end of file diff --git a/code/config.ini b/code/config.ini index c2f4497..bf67210 100644 --- a/code/config.ini +++ b/code/config.ini @@ -1,5 +1,6 @@ [GENERAL] spruchDatei = sprueche.txt +nameDatei = namen.txt [BOT] token = MTA3ODc1MTc5NzY5NjUyODQ0Nw.GNMTke.Mf5kSPSR6YjBLbSGKdGHBrXmpm9Hv7bkZyvLDU \ No newline at end of file diff --git a/code/module/__pycache__/rainer_board.cpython-39.pyc b/code/module/__pycache__/rainer_board.cpython-39.pyc index 9984a23..da1576b 100644 Binary files a/code/module/__pycache__/rainer_board.cpython-39.pyc and b/code/module/__pycache__/rainer_board.cpython-39.pyc differ diff --git a/code/module/rainer_board.py b/code/module/rainer_board.py index a44f980..fd7bc10 100644 --- a/code/module/rainer_board.py +++ b/code/module/rainer_board.py @@ -3,15 +3,18 @@ import random class rainerSpruche(): - def __init__(self, spruchDatei): - + def __init__(self, spruchDatei, nameDatei): with open(spruchDatei, 'r') as f: self.zitate = [line.strip() for line in f] - + + with open(nameDatei, 'r') as f: + self.names = [line.strip() for line in f] self.letzte_zahl = [] + self.spruchDatei = spruchDatei + self.nameDatei = nameDatei def randomSpruch(self): - self.aktuelle_zahl = random.randint(0, len(self.zitate)-1) + self.aktuelle_zahl = random.sample(range(len(self.zitate)), 1)[0] mögliche_zahlen = list(range(len(self.zitate))) while self.aktuelle_zahl in self.letzte_zahl: mögliche_zahlen.remove(self.aktuelle_zahl) @@ -21,4 +24,17 @@ class rainerSpruche(): if len(self.letzte_zahl) >= 3: self.letzte_zahl.pop(0) self.letzte_zahl.append(self.aktuelle_zahl) - return(self.zitate[self.aktuelle_zahl]) \ No newline at end of file + return(self.zitate[self.aktuelle_zahl]) + + def randomName(self): + self.aktuelle_zahl = random.sample(range(len(self.names)), 1)[0] + mögliche_zahlen = list(range(len(self.names))) + while self.aktuelle_zahl in self.letzte_zahl: + mögliche_zahlen.remove(self.aktuelle_zahl) + if len(mögliche_zahlen) == 0: + mögliche_zahlen = list(range(len(self.names))) + self.aktuelle_zahl = random.choice(mögliche_zahlen) + if len(self.letzte_zahl) >= 3: + self.letzte_zahl.pop(0) + self.letzte_zahl.append(self.aktuelle_zahl) + return(self.names[self.aktuelle_zahl]) diff --git a/code/namen.txt b/code/namen.txt new file mode 100644 index 0000000..ea3cc03 --- /dev/null +++ b/code/namen.txt @@ -0,0 +1,10 @@ +Rainer +Wongl +Wingler +Winkler +Der Drache +Der Obdachlose +Der Vierteltonner +Der Lard +Rainer Winkler Hosenpinkler +Der Bewährungsversager \ No newline at end of file diff --git a/code/sprueche.txt b/code/sprueche.txt index 6907d6e..e9eb77f 100644 --- a/code/sprueche.txt +++ b/code/sprueche.txt @@ -24,6 +24,10 @@ Die Haut ist KEIN Organ! bidde ferlass uns Ich bin der Meinung, hätte man die...äh...hätte man Amerika nie entdeckt und die Indianer hätten da ihr Leben weitergelebt...dann bin ich fest der Überzeugung, dass diese Menschen, die damals da lebten heute sowas wie Elfen wären Ich hab Kopfhörer auf ich hör dich net! -Rainer: Verpiss dich von meinem Land du Affe! Haider: Gehört dir Bayern? +Verpiss dich von meinem Land du Affe! The Legend of Zelad: Bride of the Wind -EZIOOOOO!!!!! Du bist ein verdammter Vollidiot!!!! Was machst du denn schon widder? \ No newline at end of file +EZIOOOOO!!!!! Du bist ein verdammter Vollidiot!!!! Was machst du denn schon widder? +Hass ist keine Emotion! +skurr skurr in mei Audi! Baller die Kurve zu krass, digga komm ich um die Kurve mach Platz... DIGGA! +Was interessiert mich ein Amoklauf in Österreich??!! Bei mir ist jedentag sowas wie äh... ein Amoklauf! +Was zitterst denn so? \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 265cab4..6865c75 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,17 @@ version: "3" services: - app: + discord-bot: build: context: . - dockerfile: Dockerfiles/Dockerfile - container_name: winglbot + dockerfile: Dockerfiles/bot/Dockerfile + container_name: wingl-bot restart: always + + api: + build: + context: . + dockerfile: Dockerfiles/api/Dockerfile + container_name: wingl-api + restart: always + ports: + - 8000:8000 \ No newline at end of file diff --git a/requirements_api.txt b/requirements_api.txt new file mode 100644 index 0000000..d200178 --- /dev/null +++ b/requirements_api.txt @@ -0,0 +1,4 @@ + +fastapi +uvicorn[standard] +gunicorn \ No newline at end of file diff --git a/requirements.txt b/requirements_bot.txt similarity index 100% rename from requirements.txt rename to requirements_bot.txt