mirror of
https://github.com/nichkara/InfinitumBotty.git
synced 2026-06-10 22:26:23 +02:00
Merge pull request #14 from ctx77/main
reworking some food-items, f-strings and only react when messages startswith the command and not when it is somewhere
This commit is contained in:
@@ -26,9 +26,9 @@ class Config(object):
|
||||
if not append:
|
||||
self._config_dict = {}
|
||||
for l in f.readlines():
|
||||
kv_pair = l.split(':')
|
||||
kv_pair = l.split(':', 1)
|
||||
if len(kv_pair) == 2:
|
||||
self._config_dict[kv_pair[0].strip()] = kv_pair[1][:-1].strip()
|
||||
self._config_dict[kv_pair[0].strip()] = kv_pair[1].strip()
|
||||
mods = self._config_dict['mods'].split(',')
|
||||
self._config_dict['mods'] = []
|
||||
for mod in mods:
|
||||
@@ -86,4 +86,4 @@ class Config(object):
|
||||
|
||||
@property
|
||||
def first_greeting(self):
|
||||
return self._config_dict['first_greeting']
|
||||
return self._config_dict['first_greeting']
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import datetime
|
||||
|
||||
from FaustBot.Communication.Connection import Connection
|
||||
from FaustBot.Model.UserProvider import UserProvider
|
||||
from FaustBot.Modules.PrivMsgObserverPrototype import PrivMsgObserverPrototype
|
||||
@@ -15,8 +13,7 @@ class CharactersCountObserver(PrivMsgObserverPrototype):
|
||||
return ".characters - um abzufragen wieviel du bisher geschrieben hast."
|
||||
|
||||
def update_on_priv_msg(self, data, connection: Connection):
|
||||
if data['message'].find('.characters') == -1:
|
||||
return
|
||||
user_provider = UserProvider()
|
||||
output = data['nick']+": du hast "+str(user_provider.get_characters(data['nick']))+ " Zeichen geschrieben."
|
||||
connection.send_back(output, data)
|
||||
if data["message"].startswith(".characters"):
|
||||
user_provider = UserProvider()
|
||||
output = f"{data['nick']}: du hast {str(user_provider.get_characters(data['nick']))} Zeichen geschrieben."
|
||||
connection.send_back(output, data)
|
||||
|
||||
@@ -6,6 +6,12 @@ from FaustBot.Modules.PrivMsgObserverPrototype import PrivMsgObserverPrototype
|
||||
|
||||
|
||||
class ICDObserver(PrivMsgObserverPrototype):
|
||||
with open("care_icd10_de.csv", "r", encoding="utf8") as icd10_codes:
|
||||
icd10_dict = {
|
||||
row[0]: row[1]
|
||||
for row in csv.reader(icd10_codes, delimiter=";", quotechar='"')
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def cmd():
|
||||
return None
|
||||
@@ -14,27 +20,18 @@ class ICDObserver(PrivMsgObserverPrototype):
|
||||
def help():
|
||||
return None
|
||||
|
||||
def get_icd(self, code):
|
||||
icd10_codes = open('care_icd10_de.csv', 'r',encoding='utf8')
|
||||
icd10 = csv.reader(icd10_codes, delimiter=';', quotechar='"')
|
||||
for row in icd10:
|
||||
if row[0] == code:
|
||||
return code +' - ' + row[1]
|
||||
return 0
|
||||
|
||||
def update_on_priv_msg(self, data, connection: Connection):
|
||||
if data['channel'] != connection.details.get_channel():
|
||||
return
|
||||
regex = r'\b(\w\d{2}\.?\d?\d?)\b'
|
||||
codes = re.findall(regex, data['message'])
|
||||
for code in codes:
|
||||
code = code.capitalize()
|
||||
text = self.get_icd(code)
|
||||
if text == 0:
|
||||
if code.find('.') != -1:
|
||||
code += '-'
|
||||
else:
|
||||
code += '.-'
|
||||
text = self.get_icd(code)
|
||||
if text != 0:
|
||||
connection.send_back(text, data)
|
||||
if data["channel"] == connection.details.get_channel():
|
||||
regex = r"\b(\w\d{2}\.?\d?\d?)\b"
|
||||
codes = re.findall(regex, data["message"])
|
||||
for code in codes:
|
||||
code = code.capitalize()
|
||||
text = self.icd10_dict.get(code, False)
|
||||
if text == False:
|
||||
if "." in code:
|
||||
code += "-"
|
||||
else:
|
||||
code += ".-"
|
||||
text = self.icd10_dict.get(code, False)
|
||||
if text:
|
||||
connection.send_back(f"{code} - {text}", data)
|
||||
|
||||
@@ -12,10 +12,9 @@ class ModmailObserver(PrivMsgObserverPrototype):
|
||||
return ".modmail <msg> - Sendet allen Moderatoren <msg> per PN"
|
||||
|
||||
def update_on_priv_msg(self, data, connection: Connection):
|
||||
if data['message'].find('.modmail') == -1:
|
||||
return
|
||||
mods = connection.details.get_mods()
|
||||
print(mods)
|
||||
message = data['message'].split('.modmail ')[1]
|
||||
for mod in mods:
|
||||
connection.send_to_user(mod, data['nick'] + ' meldet: ' + message)
|
||||
if data["message"].startswith(".modmail"):
|
||||
mods = connection.details.get_mods()
|
||||
print(mods)
|
||||
message = data["message"].split(".modmail ")[1]
|
||||
for mod in mods:
|
||||
connection.send_to_user(mod, f"{data['nick']} meldet: {message}")
|
||||
|
||||
@@ -2,6 +2,8 @@ from FaustBot.Communication.Connection import Connection
|
||||
from FaustBot.Modules.JoinObserverPrototype import JoinObserverPrototype
|
||||
from FaustBot.Model.UserProvider import UserProvider
|
||||
from time import sleep
|
||||
|
||||
|
||||
class First_Greeter(JoinObserverPrototype):
|
||||
"""
|
||||
A Class only reacting to pings
|
||||
@@ -20,12 +22,15 @@ class First_Greeter(JoinObserverPrototype):
|
||||
self.first_greeting = greeting
|
||||
|
||||
def update_on_join(self, data, connection: Connection):
|
||||
if data['channel'] == connection.details.get_channel():
|
||||
if data['nick'].find("Guest") != -1:
|
||||
if data["channel"] == connection.details.get_channel():
|
||||
new_nick = data["nick"]
|
||||
if (
|
||||
new_nick.startswith("Guest")
|
||||
or UserProvider().get_characters(new_nick) < 100
|
||||
):
|
||||
sleep(20)
|
||||
connection.send_back(self.first_greeting + " " + data['nick'], data)
|
||||
return
|
||||
UProvider= UserProvider()
|
||||
if(UProvider.get_characters(data['nick'])) < 100:
|
||||
sleep(20)
|
||||
connection.send_back(self.first_greeting + " " + data['nick'], data)
|
||||
if "{NICK}" in self.first_greeting:
|
||||
greeting = self.first_greeting.replace("{NICK}", new_nick)
|
||||
else:
|
||||
greeting = f"{self.first_greeting} {new_nick}"
|
||||
connection.send_back(greeting, data)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import random
|
||||
|
||||
from FaustBot.Communication import Connection
|
||||
from FaustBot.Modules.PrivMsgObserverPrototype import PrivMsgObserverPrototype
|
||||
|
||||
@@ -12,6 +14,6 @@ class FreeHugsObserver(PrivMsgObserverPrototype):
|
||||
return ".hug - verteilt Umarmungen"
|
||||
|
||||
def update_on_priv_msg(self, data: dict, connection: Connection):
|
||||
if data['message'].find('.hug') == -1:
|
||||
return
|
||||
connection.send_back('\001ACTION knuddelt ' + data['nick'] + '.\001', data)
|
||||
if data["message"].startswith(".hug"):
|
||||
hug_word = random.choice(["umarmt", "knuddelt", "drückt"])
|
||||
connection.send_back(f"\001ACTION {hug_word} {data['nick']}.\001", data)
|
||||
|
||||
@@ -15,6 +15,7 @@ class GiveCookieObserver(PrivMsgObserverPrototype):
|
||||
return ".cookie - verteilt Kekse; oder auch nicht"
|
||||
|
||||
def update_on_priv_msg(self, data: dict, connection: Connection):
|
||||
if data['message'].find('.cookie') == -1:
|
||||
return
|
||||
connection.send_back('\001ACTION schenkt ' + data['nick'] + ' ' + random.choice(kekse) + '.\001', data)
|
||||
if data["message"].startswith(".cookie"):
|
||||
connection.send_back(
|
||||
f"\001ACTION schenkt {data['nick']} {random.choice(kekse)}.\001", data
|
||||
)
|
||||
|
||||
@@ -15,6 +15,8 @@ class GiveDrinkObserver(PrivMsgObserverPrototype):
|
||||
return ".drink - schenkt Getränke aus"
|
||||
|
||||
def update_on_priv_msg(self, data: dict, connection: Connection):
|
||||
if data['message'].find('.drink') == -1:
|
||||
return
|
||||
connection.send_back('\001ACTION schenkt ' + data['nick'] + ' ' + random.choice(getraenke) + ' ein.\001', data)
|
||||
if data["message"].startswith(".drink"):
|
||||
connection.send_back(
|
||||
f"\001ACTION schenkt {data.get('nick')} {random.choice(getraenke)} ein.\001",
|
||||
data,
|
||||
)
|
||||
|
||||
@@ -11,17 +11,12 @@ from snacks import snacks
|
||||
from kekse import kekseGoodOnes
|
||||
|
||||
|
||||
def _servier(receiver,item,requester):
|
||||
fluff_text = [" ohne zu kleckern",""," mit Begeisterung","",""," nach einer substantiellen Wartezeit"]
|
||||
return "\001ACTION serviert {0} {1}{2}. Schöne Grüße von {3}\001".format(
|
||||
receiver,item,random.choice(fluff_text),requester
|
||||
)
|
||||
def _servier(receiver, item, requester):
|
||||
return f"\001ACTION serviert {receiver} {item}. Schöne Grüße von {requester}\001"
|
||||
|
||||
|
||||
def _schenk(receiver,item,requester):
|
||||
return "\001ACTION schenkt {0} {1} ein. Schöne Grüße von {2}\001".format(
|
||||
receiver,item,requester
|
||||
)
|
||||
def _schenk(receiver, item, requester):
|
||||
return f"\001ACTION schenkt {receiver} {item} ein. Schöne Grüße von {requester}\001"
|
||||
|
||||
|
||||
non_good_serveables = getraenke + essen + icecream + giveextras + snacks
|
||||
@@ -36,11 +31,11 @@ class GiveDrinkToObserver(PrivMsgObserverPrototype):
|
||||
def help():
|
||||
return ".give NUTZER - serviert jemand anderem Getränke oder Snacks"
|
||||
|
||||
def update_on_priv_msg(self,data ,connection: Connection):
|
||||
if data["message"].find(".give") == -1:
|
||||
def update_on_priv_msg(self, data, connection: Connection):
|
||||
if not data["message"].startswith(".give"):
|
||||
return
|
||||
receiver = type = None
|
||||
message_parts = data["message"].split()
|
||||
message_parts = data["messageCaseSensitive"].split()
|
||||
if len(message_parts) >= 2:
|
||||
receiver = message_parts[1]
|
||||
if len(message_parts) >= 3:
|
||||
@@ -48,7 +43,7 @@ class GiveDrinkToObserver(PrivMsgObserverPrototype):
|
||||
if receiver is None:
|
||||
return
|
||||
requester = data["nick"].lower()
|
||||
if receiver == requester:
|
||||
if receiver.lower() == requester:
|
||||
if type == "kaffee":
|
||||
connection.send_back("Fehler 418: Ich bin eine Teekanne",data)
|
||||
else:
|
||||
@@ -57,7 +52,7 @@ class GiveDrinkToObserver(PrivMsgObserverPrototype):
|
||||
if type is None:
|
||||
connection.send_back(_schenk(receiver,random.choice(getraenkegoodones),requester),data)
|
||||
return
|
||||
if type in ["drink","food","cookie","snack","massage","ice"]:
|
||||
if type in ["drink", "food", "cookie", "snack", "massage", "ice"]:
|
||||
if type == "drink":
|
||||
connection.send_back(_schenk(receiver,random.choice(getraenke),requester),data)
|
||||
elif type == "food":
|
||||
@@ -70,9 +65,8 @@ class GiveDrinkToObserver(PrivMsgObserverPrototype):
|
||||
connection.send_back(_servier(receiver,random.choice(icecream),requester),data)
|
||||
elif type == "massage":
|
||||
connection.send_back(
|
||||
"\001ACTION knetet {0} feste den Rücken durch. {1} meinte ich solle dir was Gutes tun.\001".format(
|
||||
receiver,requester
|
||||
),data
|
||||
f"\001ACTION knetet {receiver} feste den Rücken durch. {requester} meinte ich solle dir was Gutes tun.\001",
|
||||
data,
|
||||
)
|
||||
return
|
||||
matchingGoodDrinks = [drink for drink in getraenkegoodones if type in drink.lower()]
|
||||
@@ -86,7 +80,5 @@ class GiveDrinkToObserver(PrivMsgObserverPrototype):
|
||||
return
|
||||
|
||||
connection.send_back(
|
||||
"Tut mir leid {0}, {1} haben wir nicht auf der Karte!".format(
|
||||
requester,type
|
||||
),data
|
||||
f"Tut mir leid {requester}, {type} haben wir nicht auf der Karte!", data
|
||||
)
|
||||
|
||||
@@ -15,6 +15,8 @@ class GiveFoodObserver(PrivMsgObserverPrototype):
|
||||
return ".food - gibt etwas zu essen aus"
|
||||
|
||||
def update_on_priv_msg(self, data: dict, connection: Connection):
|
||||
if data['message'].find('.food') == -1:
|
||||
return
|
||||
connection.send_back('\001ACTION tischt ' + data['nick'] + ' ' + random.choice(essen) + ' auf.\001', data)
|
||||
if data["message"].startswith(".food"):
|
||||
connection.send_back(
|
||||
f"\001ACTION tischt {data['nick']} {random.choice(essen)} auf.\001",
|
||||
data,
|
||||
)
|
||||
|
||||
@@ -15,6 +15,8 @@ class GiveIceObserver(PrivMsgObserverPrototype):
|
||||
return ".ice - serviert Eis"
|
||||
|
||||
def update_on_priv_msg(self, data: dict, connection: Connection):
|
||||
if data['message'].find('.ice') == -1:
|
||||
return
|
||||
connection.send_back('\001ACTION serviert ' + data['nick'] + ' ' + random.choice(icecream) + '.\001', data)
|
||||
if data["message"].startswith(".ice"):
|
||||
connection.send_back(
|
||||
f"\001ACTION serviert {data['nick']} {random.choice(icecream)}.\001",
|
||||
data,
|
||||
)
|
||||
|
||||
@@ -4,15 +4,17 @@ from FaustBot.Model.UserProvider import UserProvider
|
||||
import time
|
||||
from collections import defaultdict
|
||||
|
||||
|
||||
class Greeter(JoinObserverPrototype):
|
||||
"""
|
||||
A Class only reacting to pings
|
||||
"""
|
||||
|
||||
greetings_dict = defaultdict(str)
|
||||
greetings_dict['Luci'] = "Hewuu"
|
||||
greetings_dict['pome'] = "Hewuu"
|
||||
greetings_dict['Skadi'] = "Awoo"
|
||||
greetings_dict["Luci"] = "Hewuu"
|
||||
greetings_dict["pome"] = "Hewuu"
|
||||
greetings_dict["Skadi"] = "Awoo {NICK}!"
|
||||
|
||||
@staticmethod
|
||||
def cmd():
|
||||
return None
|
||||
@@ -27,17 +29,21 @@ class Greeter(JoinObserverPrototype):
|
||||
self.greeting = greeting
|
||||
|
||||
def update_on_join(self, data, connection: Connection):
|
||||
if data['channel'] == connection.details.get_channel():
|
||||
if data['nick'].find("Guest") != -1:
|
||||
if data["channel"] == connection.details.get_channel():
|
||||
joined_user = data["nick"]
|
||||
if (
|
||||
joined_user.startswith("Guest")
|
||||
or UserProvider().get_characters(joined_user) < 100
|
||||
):
|
||||
return
|
||||
UProvider= UserProvider()
|
||||
if(UProvider.get_characters(data['nick'])) < 100:
|
||||
return
|
||||
if data['channel'] == connection.details.get_channel():
|
||||
if int(time.time()) - self.names[data['nick']] > 28800:
|
||||
if Greeter.greetings_dict[data['nick']] != "":
|
||||
connection.send_back(Greeter.greetings_dict[data['nick']]+" " + data['nick'], data)
|
||||
else:
|
||||
connection.send_back(self.greeting+" " + data['nick'], data)
|
||||
|
||||
self.names[data['nick']] = int(time.time())
|
||||
if int(time.time()) - self.names[joined_user] > 28800:
|
||||
greeting_text = self.greetings_dict.get(joined_user, self.greeting)
|
||||
|
||||
if "{NICK}" in greeting_text:
|
||||
response = greeting_text.replace("{NICK}", joined_user)
|
||||
else:
|
||||
response = f"{greeting_text} {joined_user}"
|
||||
connection.send_back(response, data)
|
||||
|
||||
self.names[joined_user] = int(time.time())
|
||||
|
||||
@@ -15,18 +15,19 @@ class SeenObserver(PrivMsgObserverPrototype):
|
||||
return ".seen <nick> - um abzufragen wann <nick> zuletzt hier war"
|
||||
|
||||
def update_on_priv_msg(self, data, connection: Connection):
|
||||
if data['message'].find('.seen ') == -1:
|
||||
return
|
||||
if not self._is_idented_mod(data, connection):
|
||||
return
|
||||
who = data['message'].split(' ')[1]
|
||||
user_provider = UserProvider()
|
||||
activity = user_provider.get_activity(who)
|
||||
output = data['nick']+": Ich habe "+who+" zuletzt am "+str(datetime.datetime.fromtimestamp(activity).strftime("%d.%m.%Y um %H:%M:%S"))+ ' Uhr gesehen'
|
||||
if not self._is_idented_mod(data, connection):
|
||||
connection.send_channel(output)
|
||||
return
|
||||
connection.send_back(output, data)
|
||||
if data["message"].startswith(".seen ") and self._is_idented_mod(
|
||||
data, connection
|
||||
):
|
||||
who = data["message"].split(" ")[1]
|
||||
|
||||
user_provider = UserProvider()
|
||||
activity = user_provider.get_activity(who)
|
||||
if activity == 0:
|
||||
output = f"{data['nick']}: Ich habe {who} noch nicht gesehen."
|
||||
else:
|
||||
output = f"{data['nick']}: Ich habe {who} zuletzt am {str(datetime.datetime.fromtimestamp(activity).strftime('%d.%m.%Y um %H:%M:%S'))} Uhr gesehen."
|
||||
|
||||
connection.send_back(output, data)
|
||||
|
||||
def _is_idented_mod(self, data: dict, connection: Connection):
|
||||
return data['nick'] in self._config.mods and connection.is_idented(data['nick'])
|
||||
return data["nick"] in self._config.mods and connection.is_idented(data["nick"])
|
||||
|
||||
@@ -15,6 +15,7 @@ class SnacksObserver(PrivMsgObserverPrototype):
|
||||
return ".snack - teilt Snacks aus"
|
||||
|
||||
def update_on_priv_msg(self, data: dict, connection: Connection):
|
||||
if data['message'].find('.snack') == -1:
|
||||
return
|
||||
connection.send_back('\001ACTION serviert ' + data['nick'] + ' ' + random.choice(snacks) + '.\001', data)
|
||||
if data["message"].startswith(".snack"):
|
||||
connection.send_back(
|
||||
f"\001ACTION serviert {data['nick']} {random.choice(snacks)}.\001", data
|
||||
)
|
||||
|
||||
@@ -76,7 +76,7 @@ class TitleObserver(PrivMsgObserverPrototype):
|
||||
else:
|
||||
# with open("content.html", "w") as file:
|
||||
# file.write(content)
|
||||
raise Exception("Could not Parse Title for {}".format(url))
|
||||
raise Exception(f"Could not Parse Title for {url}")
|
||||
|
||||
title = html.unescape(title)
|
||||
title = title.replace("\n", " ").replace("\r", "")
|
||||
@@ -84,5 +84,5 @@ class TitleObserver(PrivMsgObserverPrototype):
|
||||
title = title.replace(">", ">")
|
||||
title = title.replace("&", "&")
|
||||
if title == "":
|
||||
raise Exception("Empty Title for {}".format(url))
|
||||
raise Exception(f"Empty Title for {url}")
|
||||
return title
|
||||
|
||||
@@ -6,7 +6,7 @@ Designed for non-technical channels
|
||||
## Usage
|
||||
|
||||
### Requirements
|
||||
- Python 3.5
|
||||
- Python 3.8+
|
||||
- pip
|
||||
- wikipedia package (can be installed using pip; tested with version 1.4.0)
|
||||
- virtualenv (optional)
|
||||
|
||||
52
essen.py
52
essen.py
@@ -47,30 +47,30 @@ essen = [
|
||||
'einen Teller selbstgedrehte Zucchini-Nudeln',
|
||||
'mildes Möhrenmischmasch','gegrillten Kürbis','knusprige Frühlingsrollen mit Dip',
|
||||
'drei frische Onigiri','den Kraftriegel der deutschen Arbeiterklasse',
|
||||
'ein Klabusterbeerensorbet','Bratwurst mit Sauerkraut','ein Bündel Petersilie',
|
||||
'Bratwurst mit Sauerkraut','ein Bündel Petersilie',
|
||||
'eine Schale Stachelbeerkompott','Stulle mit Brot','einen laienhaft zubereiteten Fugofisch',
|
||||
'ein Stück kichernden Käsekuchen mit Himbeeren','eine Handvoll rohe Mandeln',
|
||||
'die Rechnung','entzückendes Erbsengemüse','Eierlikörkuchen mit vollständig ausgebackenem Eierlikör',
|
||||
'drei Stücke traurige trockene Torte','Wassermelonensalat in einer ausgehöhlten Wassermelone',
|
||||
'das feingemahlene Horn eines Narwals','einen Tuppen Gänseschmalz ohne Salz',
|
||||
'das Leid der Vorväter','abgelaufenes Knäckebrot, das nicht mehr knackt',
|
||||
'einen runderneuerten Obstkuchen mit einer Hundertschaft Obstfliegen',
|
||||
'abgelaufenes Knäckebrot, das nicht mehr knackt',
|
||||
'einen runderneuerten Obstkuchen mit upgegradeten Erdbeeren',
|
||||
'Rock`n Roll-Rouladen','eine ganze Benjamin-Blümchen-Torte','eine Schüssel chaotische Chili-sin-Carne',
|
||||
'eine zerbrochene Schallplatte','sauer eingelegten Aal in Aspik','Ameisen in Aspik',
|
||||
'eine zerbrochene Schallplatte','sauer eingelegten Aal in Aspik',
|
||||
'ein unidentifizierbares Experiment mit zu viel zerlaufener Butter',
|
||||
'einen Hilferuf des Küchenlehrlings',
|
||||
'einen Gruß des Küchenlehrlings',
|
||||
'einen Klumpen Teig, der an einen Kuchen erinnert,','gefüllte Chocolate-Chip-Cookies',
|
||||
'gedünsteten Brokkoli mit Lachsfilet','gebratenes Gemüse mit Erdnusssoße',
|
||||
'einen unleserlichen Erpresserbrief','Quinoasalat mit feinen Tomaten',
|
||||
'einen unleserlicher Brief eines voherigen Besuchers','Quinoasalat mit feinen Tomaten',
|
||||
'einen italienischen Klassiker mit einem “Spritzer” Olivenöl',
|
||||
'ein selbst gebackenes Kürbiskernbrötchen','ein knuspriges Laugendreieck',
|
||||
'eine Wagenladung voll Spritzgebäck','einen Döner mit Mais',
|
||||
'eine ominöse grellgrüne Grütze','einen benutzten Teller',
|
||||
'Schlagsahne direkt aus der Sprühdose',
|
||||
'ein Glas Erdnussbutter und einen Löffel',
|
||||
'einen halb gegessenen Pfannkuchen','eine völlig verkohlte Crème Brûlée',
|
||||
'einen halb gegessenen Pfannkuchen','eine nicht ganz perfekte Crème Brûlée',
|
||||
'eine Portion Thunfischsalat','eine rohe Knoblauchzehe',
|
||||
'eine Botschaft vom Weihnachtsmann (er ist enttäuscht von dir)',
|
||||
'eine Botschaft vom Weihnachtsmann (er wünscht alles Gute)',
|
||||
'Wok-Gemüse mit Udonnudeln','eine Schüssel Ramen mit einem Alibi-Ei',
|
||||
'eine Kringelbratwurst mit Gurkensalat','ein Stück Lasagne nach einem alten Rezept',
|
||||
'die Reliquie eines unbekannten Heiligen','ein Stück Hochzeitstorte mit 2kg Fondant',
|
||||
@@ -98,7 +98,7 @@ essen = [
|
||||
'ein knuspriges Langos mit Salz und Öl','einen Spieß frisch gebackener Kartoffelchips mit Salz und Essig',
|
||||
'eine ganze Ananas','einen prall gefüllten Frühstücksburrito',
|
||||
'eine mehr oder weniger gelungene Weihnachtsgans','eine Handvoll getrocknete Früchte',
|
||||
'Gemüsestreifen mit Hummus-Dip','Bertie-Botts-Bohnen in nur den schlechten Geschmacksrichtungen',
|
||||
'Gemüsestreifen mit Hummus-Dip','Bertie-Botts-Bohnen in den sonderbarsten Geschmacksrichtungen',
|
||||
'drei brodelnde Kesselküchlein','eine Schale festklebender Bonbons aus Omas Schrank',
|
||||
'Gourmet-Katzenfutter','ein Omelett mit Pilzen und Cheddar','eine Pizza Supreme mit gefülltem Rand',
|
||||
'zwei französische Tacos mit algerischer Soße','eine Packung Schokofrösche',
|
||||
@@ -133,7 +133,7 @@ essen = [
|
||||
'einen deckenhohen Stapel Pfannkuchen und eine Flasche Ahornsirup','einen gegrillten Gemüsespieß',
|
||||
'ein Panna Cotta mit Aprikosenkompott','eine knusprige Heuschrecke am Spieß',
|
||||
'eine Schale liebevoll geschnittenes Obst','ein halbes Brötchen mit grober Leberwurst',
|
||||
'eine täuschend echte Rolle Toilettenpapier','eine große Auswahl an Sushi-Spezialitäten und etwas Sojasoße',
|
||||
'eine täuschend echte Rolle Toilettenpapier, aber es ist Kuchen','eine große Auswahl an Sushi-Spezialitäten und etwas Sojasoße',
|
||||
'eine schmackhafte Ingwerwurzel','eine Portion Süßkartoffelpommes mit Mango-Chutney','ein Ticket zum Mond',
|
||||
'eine gut abgeschmeckte Portion Kartoffeleintopf','eine Bockwurst mit Ketchup',
|
||||
'einen Teller Eisbein mit Sauerkraut','eine Scheibe salzigen Kasseler','eine Portion Schmorgurken',
|
||||
@@ -153,12 +153,11 @@ essen = [
|
||||
'einen Teller Pasta Primaverda','eine heiße Ofenkartoffel','eine Pizza mit riesiger Ananasscheibe',
|
||||
'eine halbe Pizza frutti-di-mare mit extra Knoblauch','eine krachende Kaisersemmel',
|
||||
'eine Packung gebratener Hühnerherzen','einen sofort die Flucht ergreifenden Tausendfüßler',
|
||||
'einen riesigen Königsberger Klops mit Kapernfüllung','ein verirrtes Silberfischchen',
|
||||
'einen unverständlichen Gruß aus der Küche',
|
||||
'einen riesigen Königsberger Klops mit Kapernfüllung','einen unverständlichen Gruß aus der Küche',
|
||||
'ein schokoladiges Miniaturmodell des Sonnensystems mit Pluto als Kirsche','Gold, Weihrauch und Myrrhe',
|
||||
'den kulinarischen Epitaph des Küchenchefs','ein halsbrecherisches Stuntmanöver mit klapperndem Geschirr',
|
||||
'einen nicht wie die Abbildung auf der Karte aussehenden Burger','einen echten Cheeseburger zum Mitnnehmen',
|
||||
'gefälschten Kokoskuchen mit Hornhautraspel','ein Replikat der Fettecke','einen einzelnen angekokelten Marshmallow',
|
||||
'gefälschten Kokoskuchen mit Hornhautraspel','ein Replikat der Fettecke','einen einzelnen karamellisierten Marshmallow',
|
||||
'einen seltenen niederländischen Bergkäse','den Nuclear Football mit Gebrauchsanleitung',
|
||||
'ein Schokoladentörtchen mit geschmolzenem Kern','eine Partypackung Salzstangen',
|
||||
'ein deftig belegtes Laugenbrötchen','zwei Fischfrikadellen mit Tomatensalat','die Reste der gestrigen Grillfeier',
|
||||
@@ -172,9 +171,9 @@ essen = [
|
||||
'eine überreife Banane mit braunen Stellen','einen fruchtigen Salat mit Honigmelone',
|
||||
'eine ganze Aloe-Vera-Pflanze im Topf','ein Frühstücks-Abendessen',
|
||||
'die abgelaufene Srirachasoße aus dem Kühlschrank','einen Teller nordische Fischsuppe',
|
||||
'ein frisches Matjesbrötchen','eine Dose Schwertfisch mit abgelaufenem Verfallsdatum',
|
||||
'ein frisches Matjesbrötchen','eine Dose Schwertfisch mit kürzlich abgelaufenem Verfallsdatum',
|
||||
'Kartoffelpuffer mit Apfelmus','Spinat mit gummiartigem Rührei','Spinat mit knusprigen Fischstäbchen',
|
||||
'eine nervös machende tickende Taschenuhr','eine einzelne Bertie-Botts-Bohne mit Hundefuttergeschmack',
|
||||
'eine tickende Taschenuhr','eine einzelne Bertie-Botts-Bohne mit Hundefuttergeschmack',
|
||||
'eine Rolle Klebestreifen ohne findbaren Anfang','eine Schale duftender Fenchelsuppe',
|
||||
'eine Schale Fertigsalat aus dem Supermarkt','eine Schüssel Nudel-Rosenkohl-Eintopf','eine Schale Wrukeneintopf',
|
||||
'eine glasierte Streuselschnecke','ein fruchtiger Mandarinenkuchen mit Teigstreuseln','ein Stück Fantakuchen',
|
||||
@@ -198,8 +197,8 @@ essen = [
|
||||
'klassisch in Bierteig frittierte Fish`n Chips','ein Stilleben aus Wachs','eine Schale ungewürztes Erbsenpüree',
|
||||
'ein gegrilltes Hähnchen mit einer würzigen Tomaten-Curry-Soße','eine kaum Licht spendende Waltranfunsel',
|
||||
'gedämpfte Miesmuscheln mit knusprigen Pommes','einen Geburtstagskuchen mit zu wenig Kerzen',
|
||||
'einen Human Body Part Cake','einen seltsam grünlich schimmernden Leberkäse','eine angebrochene Packung Oreos',
|
||||
'eine Eitrige mit einem Buckel und Krokodil','eine überraschende Wendung der Dinge','eine hinterlistige Intrige',
|
||||
'einen seltsam grünlich schimmernden Leberkäse','eine angebrochene Packung Oreos',
|
||||
'ein Krokodil','eine überraschende Wendung der Dinge','eine dramatische Intrige',
|
||||
'einen geheimnisvollen Schlüssel unter einer Speiseglocke','einen Rücktrittsbrief des Papstes',
|
||||
'ein unlösbares Rätsel','das Leibgericht von Theodore Roosevelt','die Bestellung des Sitznachbarn',
|
||||
'ein saftiges Elchsteak mit Rotkohl','eine intergalaktische Spezialität','ein Rezept und passende Zutaten',
|
||||
@@ -211,32 +210,32 @@ essen = [
|
||||
'eine Packung Proteinpulver und Wasser','eine Pizza ohne Rand','eine aufgeklappte Calzone',
|
||||
'eine Pizza mit ausschließlich Rand','ein Haar in der Suppe','vier Töpfe cremiger Muschelsuppe',
|
||||
'eine Portion Rindfleisch und Brokkoli','ein von Javier Milei mit der Motorsäge zurechtgeschnittenes Beefsteak',
|
||||
'ein closed-faced Sandwich','etwas Stroh und eine Maske','ein open-faced Sandwich',
|
||||
'ein closed-faced Sandwich','ein open-faced Sandwich',
|
||||
'einen auslaufenden Kautschukbaum','Sägespäne mit knuspriger Baumrinde','eine gleißend helle Sonne',
|
||||
'ein Stück Sägespänekuchen','Lammbraten mit Minzsoße','einen strikten Diätplan',
|
||||
'ein Stück Sägespänekuchen','Lammbraten mit Minzsoße',
|
||||
'ein ambitioniertes Trainingsprogramm','einen straffen Tagesplan','einen Teller Englische Scones mit Marmelade',
|
||||
'eine Portion Kanadische Poutine','einen Pfälzer Saumagen auf Sauerkraut','eine Packung knusprige Käsestangen',
|
||||
'zwei Körbe fettiger Pizzabrötchen','eine Freikarte für einen sich im Niedergang befindenden Zirkus',
|
||||
'einen ganzen Baumkuchen','ein Bündel Scheine','einen verdächtig stinkenden Fischburger',
|
||||
'einen ganzen Baumkuchen','ein Bündel Scheine','einen Fischburger',
|
||||
'einen doppelten Hamburger mit extra Käse','einen blinden Handspiegel','Dornröschens Spindel',
|
||||
'eine Liste mit Restaurants in der Nähe','die Bremer Stadtmusikanten','ein Töpfchen mit endlosem süßen Brei',
|
||||
'ein Stück frische Honigwabe','einen Teller Rote-Beete-Suppe mit saurer Sahne',
|
||||
'einen Salzstreuer mit perfide abgeschraubtem Deckel','zwölf knusprige Chicken-Wings',
|
||||
'einen Salzstreuer mit fast abgeschraubtem Deckel','zwölf knusprige Chicken-Wings',
|
||||
'ein großes Lachsfilet mit knuspriger Haut','ein fest geschlossenes Glas Mayonnaise',
|
||||
'aufgetauten Kuchen vom letzten Jahr','ein Lebkuchenhaus mit eingestürztem Dach','ein Stück Lebkuchen-Kuchen',
|
||||
'auf offenem Feuer zubereitetes Bulgogi','den Orden pour le Mérite','eine billige Imitation vom Goldenen Vlies',
|
||||
'das bei Alfred Biolek von Blixa Bargeld gekochte Risotto','das legendenumwobene Stück eines italienischen Rinds',
|
||||
'einen Rasenziegel','eine Mütze Schlaf','eine Portion Obatzter','eine Raffaello-Torte',
|
||||
'einen Tortenheber ohne Torte weit und breit','einen alten ledrigen linken Stiefel','eine Büste von Karl Marx',
|
||||
'Kartoffelpüree aus der Tüte','eine ganze Zitrone','ein Fragment vom Elefantenfuß in Tschernobyl',
|
||||
'Kartoffelpüree aus der Tüte','eine ganze Zitrone','eine Schale Elefantencreme',
|
||||
'geschichteten Schokopudding mit Waldbeeren','eine Mao-Bibel','zwei Stücke Champignon-Spinat-Lasagne',
|
||||
'eine Schale Haferbrei mit Honig','eine Schale Chiapudding mit Mango','eine weiche Birne','eine einzelne Walnuss',
|
||||
'eine sich in seinen Haaren verfangene Fledermaus','einen Hauch von Verachtung für die niederen Dinge im Leben',
|
||||
'eine Portion Reis mit Hühnerfrikassee','Jasminreis mit gedünstetem Kaisergemüse',
|
||||
'das Herz eines gemeinsamen Feindes','eine Warnung','die Totenmaske des Tutanchamun',
|
||||
'ein Brief eines gemeinsamen Feindes','eine Warnung','die Totenmaske des Tutanchamun',
|
||||
'einen Brief von Hogwarts in grüner Tinte','drei westafrikanische Kichererbsenfrikadellen',
|
||||
'einen Hornissenschwarm unter einer Käseglocke','gebackene Bananenbällchen mit Honig','billiges Sushi',
|
||||
'eine Auswahl an winterlichen Gebäcken','ein Ohr von Vincent van Gogh','Sommerrollen mit Teriyaki-Sauce',
|
||||
'gebackene Bananenbällchen mit Honig','billiges Sushi',
|
||||
'eine Auswahl an winterlichen Gebäcken','Sommerrollen mit Teriyaki-Sauce',
|
||||
'einen duftenden Bratapfel','dreizehn üppige Zimtschnecken','selbstgemachte Tacos mit Ortega-Soße',
|
||||
'eine Schale geriebenen Gouda','überbackenes Toast Hawaii','einige Stücke russischen Zupfkuchen',
|
||||
'gezuckerte Krapfen','eine heiße Apfeltasche','eine gigantische knusprige Krokette',
|
||||
@@ -281,10 +280,9 @@ essen = [
|
||||
'einige harte Salzkaramell-Bonbons','Mokka-Eiscreme mit einem klitzebisschen Pistazie',
|
||||
'nicht weniger als zwanzig Semmelknödel','einen klobig-klebrigen Proteinriegel','das Antlitz der Fata Morgana',
|
||||
'einen dreckigen Deal','ein einschneidendes Erfolgserlebnis','einen Berg fettige Ringelpommes',
|
||||
'eine meterlange Gurkenspirale','eine Schale fein pürierter Selbstkontrolle','Nougat in Form von Meeresfrüchten',
|
||||
'eine meterlange Gurkenspirale','Nougat in Form von Meeresfrüchten',
|
||||
'einen Topf Matzah-Ball-Suppe','einen Laib geflochtenes Challah','eine XXL-Packung Merci',
|
||||
'Pekingente mit Hoisin-Sauce',
|
||||
|
||||
]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user